使用 OpenCV- Python替换绿屏
先决条件: OpenCV Python教程
OpenCV(Open Source Computer Vision)是一个计算机视觉库,包含对图片或视频执行操作的各种功能。该库是跨平台的,可用于多种编程语言,如Python、C++ 等。
VFX 行业使用绿屏去除来改变场景。在这里,我们将使用OpenCV – Python来做同样的事情。
方法:
- 导入所有必要的库
- 加载图像或视频
- 将图像和视频调整为相同大小
- 加载绿色的上下BGR值
- 应用掩码,然后使用 bitwise_and
- 从原始绿屏图像中减去 bitwise_and
- 减法后检查矩阵值 0 并将其替换为第二个图像
- 你会得到想要的结果。
下面是实现。
Python3
import cv2
import numpy as np
video = cv2.VideoCapture("green.mp4")
image = cv2.imread("bg.jpeg")
while True:
ret, frame = video.read()
frame = cv2.resize(frame, (640, 480))
image = cv2.resize(image, (640, 480))
u_green = np.array([104, 153, 70])
l_green = np.array([30, 30, 0])
mask = cv2.inRange(frame, l_green, u_green)
res = cv2.bitwise_and(frame, frame, mask = mask)
f = frame - res
f = np.where(f == 0, image, f)
cv2.imshow("video", frame)
cv2.imshow("mask", f)
if cv2.waitKey(25) == 27:
break
video.release()
cv2.destroyAllWindows()
输出: