我正在嘗試做一些非常簡單的事情:從視頻中減去bg圖像以進行對象跟蹤。我知道圖像可以簡單地相互減去img3 = img2 - img1
。然而,即使當我從一個圖像開始簡單時,添加一條黑色線條並將其存儲爲img2,img3不會顯示線條。當我運行下面的代碼如何使用opencv減去python中的兩個視頻幀
import cv2
img1 = cv2.imread("img1.png")
img2 = cv2.imread("img2.png")
img3 = img2 - img1
cv2.imwrite("img3.png",img3)
與波紋管IMG1和IMG2:
我得到的圖像下面的左邊,而不是右邊的圖像:
我想在視頻中使用此方法進行背景提取,例如在那裏我有一個bg圖像文件,顯示一個靜態場景和一個視頻,其中有時候物體會進入和退出屏幕。我用下面的代碼,但同樣收到B/W圖像,而不是隻看到沒有場景中的物體的..
import cv2
import numpy as np
from PIL import Image
capture = cv2.VideoCapture("video.mov")
while True:
f, frame = capture.read()
frame = cv2.GaussianBlur(frame,(15,15),0)
frame = frame - bg
cv2.imshow("window", frame)
PS:我知道自動背景減法,但我有很好的背景文件,並很清楚空非常明顯的對象的場景,所以認爲這應該很容易工作!
更新:我剛剛發現了關於PIL ImageChops差函數,用來獲取什麼,我想有兩個圖像,但似乎不可能與OpenCV的視頻開通使用工作。也可以使用numpy數組手動執行ImageChops.difference(img1,img2)嗎?