我想从实时视频流中检测特定颜色,例如蓝色。 我编写了以下代码,显示实时视频流并将其更改为HSV和灰度。由于我是opencv的新手,我不知道下一步该做什么。
有人可以为我完成检测特定颜色的代码。
#include<opencv\cv.h>
#include<opencv\highgui.h>
using namespace cv;
int main(){
Mat image;
Mat gray;
Mat hsv;
VideoCapture cap;
cap.open(0);
namedWindow("window", CV_WINDOW_AUTOSIZE);
namedWindow("gray", CV_WINDOW_AUTOSIZE);
namedWindow("hsv", CV_WINDOW_AUTOSIZE);
while (1){
cap >> image;
cvtColor(image, gray, CV_BGR2GRAY);
cvtColor(image, hsv, CV_BGR2HSV);
imshow("window", image);
imshow("gray", gray);
imshow("hsv", hsv);
waitKey(33);
}
return 0;
}
答案 0 :(得分:10)
您可以分三步完成:
修改强>
您可以使用此code查找源图像中任何像素的HSV值。你可以看到关于HSV色彩空间here的一个很好的解释,从那里下载HSV色轮并手动找出HSV范围。
以下范围可用于the comments中提供的图像:
hsv_min--> (106,60,90)
hsv_max-->(124,255,255)
可以使用以下代码:
Mat src=imread("image.jpg");
Mat HSV;
Mat threshold;
cvtColor(src,HSV,CV_BGR2HSV);
inRange(HSV,Scalar(106,60,90),Scalar(124,255,255),threshold);
imshow("thr",threshold);
这是输出: