Я пытаюсь включить и выключить реле, основанное на обнаружении цвета в кадре с веб-камеры. Поскольку это нужно делать в режиме реального времени, я решил использовать numpy slicing. Проблема в том, что многозначный ВСЕГДА обнаруживает цвет, который я вводил, если я не полностью закрываю камеру, и я просто не понимаю, почему.Использование numpy.any для соответствия цвета в opencv дает странные результаты
Вот соответствующий фрагмент кода:
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 не должен всегда быть верным, если кулачок не видит зеленый пиксель неон, так что я не уверен, что происходит.
Этот метод работал отлично, спасибо. – Snesticle