我试图将人的手的图像与背景分开。我首先捕获了在我的情况下将是静态的背景,然后用手将其捕获。然后,我使用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)
答案 0 :(得分:0)
如果仅从前景图像中减去背景图像,则无法分离前景对象,因为要通过减去它们隐藏的背景来更改它们(这将导致图像中出现两条难看的黑线) 。可能的解决方案:仅在两个图像相同的区域(或具有任意容差以考虑轻微变化的照明条件)中从前景中减去背景。对于图像,您很可能必须为背景像素和前景像素之间的差异添加特定的公差(可能为15到25?),因为手会阻挡入射光,因此背景图像比前景图像要轻一些。