我试着打开一个彩色的摄像头来检测。因为它需要实时执行此操作,所以我选择使用numpy切片。问题是numpy总是检测到我输入的颜色,除非我完全遮住相机,我只是不明白为什么。在
下面是相关的代码片段:
import numpy as np
import cv2
import video
while True:
ret,frame = cam.read()
img = frame.copy()
sens = 20
b = 0
#roughly neon green
img1B = 20
img1G = 230
img1R = 50
if np.any(np.logical_and(img[:,:,0]>=img1B-sens, img[:,:,0]<=img1B+sens)):
b = True
else:
b = False
if np.any(np.logical_and(img[:,:,1]>=img1G-sens, img[:,:,1]<=img1G+sens)):
g = True
else:
g = False
if np.any(np.logical_and(img[:,:,2]>=img1R-sens, img[:,:,2]<=img1R+sens)):
r = True
else:
r = False
print b,g,r
B,G,R不应该总是真的,除非摄像头看到一个霓虹绿像素,所以我不确定发生了什么。在
您不需要使用} 和^{} 来完成您的工作。以上步骤可以调整为一种方法,您可以从
numpy
操作三次来过度复杂化问题。您可以简单地使用^{while
循环中调用该方法来处理每个网络摄像头帧。在相关问题 更多 >
编程相关推荐