我想在图像上实现对象的检测。检测必须尽可能快,所以我唯一考虑的是颜色。 (对象的颜色是唯一的)。但是,我们知道图像上的真实物体和物体之间的颜色可能不同。所以算法必须考虑到这种差异。
我更喜欢使用OpenCV的解决方案,但没有必要。
答案 0 :(得分:1)
您还没有提到您正在使用的编程语言。这是一个使用跟踪栏实现颜色阈值处理的python + OpenCV代码:
import cv2
def nothing(x): #needed for createTrackbar to work in python.
pass
cap = cv2.VideoCapture(0)
cv2.namedWindow('temp')
cv2.createTrackbar('bl', 'temp', 0, 255, nothing)
cv2.createTrackbar('gl', 'temp', 0, 255, nothing)
cv2.createTrackbar('rl', 'temp', 0, 255, nothing)
cv2.createTrackbar('bh', 'temp', 255, 255, nothing)
cv2.createTrackbar('gh', 'temp', 255, 255, nothing)
cv2.createTrackbar('rh', 'temp', 255, 255, nothing)
while true
ret,img=cap.read()#Read from source
bl_temp=cv2.getTrackbarPos('bl', 'temp')
gl_temp=cv2.getTrackbarPos('gl', 'temp')
rl_temp=cv2.getTrackbarPos('rl', 'temp')
bh_temp=cv2.getTrackbarPos('bh', 'temp')
gh_temp=cv2.getTrackbarPos('gh', 'temp')
rh_temp=cv2.getTrackbarPos('rh', 'temp')
thresh=cv2.inRange(img,(bl_temp,gl_temp,rl_temp),(bh_temp,gh_temp,rh_temp))
if(cv2.waitKey(10) & 0xFF == ord('b')):
break #break when b is pressed
cv2.imshow('Video', img)
cv2.imshow('thresh', thresh)