Так что в основном я пытаюсь использовать 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
Возможно, просто найдите самый яркий пиксель (т. Е. Max) и посмотрите, белый ли он. –