检测图像上的颜色

时间:2016-04-20 13:56:59

标签: opencv

我想在图像上实现对象的检测。检测必须尽可能快,所以我唯一考虑的是颜色。 (对象的颜色是唯一的)。但是,我们知道图像上的真实物体和物体之间的颜色可能不同。所以算法必须考虑到这种差异。

我考虑的对象是: enter image description here

我更喜欢使用OpenCV的解决方案,但没有必要。

1 个答案:

答案 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)