opencv 彩色图像前景提取
时间: 2023-07-24 13:56:42 浏览: 115
OpenCV 中可以使用 BackgroundSubtractorMOG2 算法进行彩色图像的前景提取。下面是一个示例代码:
```python
import cv2
cap = cv2.VideoCapture('test.mp4')
# 创建 BackgroundSubtractorMOG2 对象
fgbg = cv2.createBackgroundSubtractorMOG2()
while True:
ret, frame = cap.read()
if not ret:
break
# 背景建模和前景检测
fgmask = fgbg.apply(frame)
# 前景提取
fg = cv2.bitwise_and(frame, frame, mask=fgmask)
# 显示前景图像
cv2.imshow('frame', fg)
# 按 Esc 退出程序
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
```
在这个示例代码中,我们首先创建了一个 BackgroundSubtractorMOG2 对象 fgbg。在 while 循环中,我们通过调用 fgbg.apply(frame) 对当前帧进行背景建模和前景检测,得到前景掩码 fgmask。然后,我们使用 cv2.bitwise_and() 函数将原始图像和前景掩码相乘,得到前景图像 fg。最后,我们将 fg 显示出来。
需要注意的是,如果需要对彩色图像进行前景提取,需要对每个通道分别进行前景检测和前景提取。可以使用 cv2.split() 函数将彩色图像拆分成三个通道,对每个通道分别进行操作,最后再使用 cv2.merge() 函数将三个通道合并成一张彩色图像。
阅读全文