所以基本上我试图使用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返回的图像中是否有白色像素?
答案 0 :(得分:1)
您可以查看OpenCV的countNonZero
函数。
Baqir Khan提供的示例:
if cv2.countNonZero(img2) > 29700:
print("Motion")
else:
print("No Motion")