【发布时间】:2018-09-11 20:31:02
【问题描述】:
我试图从背景中分离出人手的图像。我首先捕获了在我的情况下将是静态的背景,然后用手在其中捕获了图像。然后我使用 cv2.absdiff() 减去两个图像,但结果不如预期。请帮我解决这个问题。这是输出:
代码:
while(cap.isOpened()):
grabbed, frame = cap.read()
if not grabbed:
continue
Original_Image = frame.copy()
Original_Image = cv2.cvtColor(contourFrame,cv2.COLOR_BGR2GRAY)
Output_Image = cv2.absdiff(Background_Image, Original_Image)
【问题讨论】:
-
我认为您添加了错误的图像作为
Background image,因为它与输出相同并且看起来不像背景图像。 -
非常感谢。我已经改了。
-
看看this question 仅仅调用absdiff 显然是不够的。您需要找到前景对象的蒙版并将其应用于图像。
-
选择 Diff_Image = cv2.absdiff(Background_Image, Original_Image) 和 Output_Mask = Diff_Image > 15 然后仅将蒙版像素复制到输出图像
标签: python opencv image-processing background-subtraction