Python 知道图像中是否有白色像素的有效方法?
所以基本上我尝试使用OpenCV 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
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")