gpt4 book ai didi

python - 两个图像的 OpenCV 'BackgroundSubtractorMOG2'

转载 作者:行者123 更新时间:2023-12-02 16:07:24 25 4
gpt4 key购买 nike

我正在尝试使用 OpenCV 的 BackgroundSubtractorMOG2 方法突出显示两个几乎相似的图像蒙版之间的差异。

我的代码:

def Approach_2():
img = [0, 0]
img[0] = cv2.imread('images/4-left.PNG', cv2.IMREAD_GRAYSCALE)
img[1] = cv2.imread('images/4-right.PNG', cv2.IMREAD_GRAYSCALE)

img[0], img[1] = make_similar(img[0], img[1]) # make two images similar (equal width and height) by applying scaling, translation and performs Canny edge detection on two images

fps = 5

fgbg = cv2.createBackgroundSubtractorMOG2(detectShadows=True)

cv2.imshow("A", img[0])
cv2.imshow("B", img[1])

i = 1
while(True):

frame = img[i]
i = 1-i
fgmask = fgbg.apply(frame)

cv2.imshow('original', frame)
cv2.imshow('fg', fgmask)
# cv2.imshow('fg', cv2.bitwise_and(frame, frame, mask=fgmask))

time.sleep(1 / fps)

if(cv2.waitKey(1) & 0xFF == ord('q')) : break

cv2.destroyAllWindows()

if __name__ == '__main__':
Approach_2()

但我得到的只是空白的“fgmask”。 enter image description here

任何建议。 ?

最佳答案

如评论中所述,您应该按位运算。它更容易,效率更高。你可以阅读它here

添加一些额外的信息:背景减法器可以(通过一些技巧)用于静止图像,但它适用于视频。您可以找到示例代码 here

至于你的代码,它没有建立一个坚实的背景,因为它在每一帧上交替使用两个源图像。因此,结果是一个空白掩码。

关于python - 两个图像的 OpenCV 'BackgroundSubtractorMOG2',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53694059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com