Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 知道图像中是否有白色像素的有效方法?_Python_Opencv - Fatal编程技术网

Python 知道图像中是否有白色像素的有效方法?

Python 知道图像中是否有白色像素的有效方法?,python,opencv,Python,Opencv,所以基本上我尝试使用OpenCV Python来进行运动检测。我使用教程来实现这一点,下面是我的代码 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.COLO

所以基本上我尝试使用OpenCV Python来进行运动检测。我使用教程来实现这一点,下面是我的代码

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返回的图像中是否有白色像素吗?

您可以查看函数fom OpenCV

Baqir Khan提供的示例:


例如,OpenCV提供countNonZero()。可能一些内置python(numpy)函数更快。可能是“任何”或“所有”?可能只是找到最亮的像素(即最大值),看看它是否为白色。至少提供一个例子,或者这个答案应该是一个好主意!谢谢:)@Miki这是一个例子
如果cv2.countNonZero(img2)>29700:打印(“运动”)否则:打印(“无运动”)
if cv2.countNonZero(img2) > 29700: 
    print("Motion") 
else: 
    print("No Motion")