所以基本上我試圖使用OpenCV-Python來做運動檢測。我使用this教程來做到這一點,這裏是我的代碼。知道圖像中是否有白色像素的有效方法?
import cv2
def diffImg(t0, t1, t2):
d1 = cv2.absdiff(t2, t1)
d2 = cv2.absdiff(t1, t0)
return cv2.bitwise_and(d1, d2)
cap = cv2.VideoCapture(0)
t = cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2GRAY)
tp = cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2GRAY)
tpp = cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2GRAY)
while cap.isOpened():
img = cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2GRAY)
img2 = diffImg(t,tp,tpp)
cv2.imshow("Motion", img2)
t=tp
tp=tpp
tpp=img
key = cv2.waitKey(10)
if key == 27 :
cv2.destroyAllWindows()
break
我想在控制檯上打印有移動檢測與否。 有運動時,輸入圖像中有白色像素。 但我不知道如何在輸入圖像中找到白色像素。 任何人都可以告訴我如何查找diffImg返回的圖像中是否有白色像素?
OpenCV提供countNonZero(),例如。可能某些內置的python(numpy)函數更快。也許「任何」或「全部」? – Miki
也許只是找到最亮的像素(即最大),看看是否是白色。 –