#include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace cv; int minh,maxh,mins,maxs,minv,maxv; void helptext() { cout << "B——黑色 "; cout << "H——灰色 "; cout << "W——白色 "; cout << "R——红色 "; cout << "O——橙色 "; cout << "Y——黄色 "; cout << "G——绿色 "; cout << "L——蓝色 "; cout << "P——紫色 "; cout << "输入要求识别的颜色对应的字母:" ; } void deal(char color) { switch(color){ case 'B': minh = 0; maxh = 180; mins = 0; maxs = 255; minv = 0; maxv = 46; break; case 'H': minh = 0; maxh = 180; mins = 0; maxs = 43; minv = 46; maxv = 220; break; case 'W': minh = 0; maxh = 180; mins = 0; maxs = 30; minv = 221; maxv = 255; break; case 'R': minh = 0; maxh = 10; mins = 43; maxs = 255; minv = 46; maxv = 255; break; case 'O': minh = 11; maxh = 25; mins = 43; maxs = 255; minv = 46; maxv = 255; break; case 'Y': minh = 26; maxh = 25; mins = 43; maxs = 255; minv = 46; maxv = 255; break; case 'G': minh = 35; maxh = 77; mins = 43; maxs = 255; minv = 46; maxv = 255; break; case 'L': minh = 100; maxh = 124; mins = 43; maxs = 255; minv = 46; maxv = 255; break; case 'P': minh = 125; maxh = 155; mins = 43; maxs = 255; minv = 46; maxv = 255; break; default: cout << "输入错误" << endl; exit(0); } } int main( ) { VideoCapture capture(0); Mat special; helptext(); char color; cin >> color; deal(color); while(1){ Mat frame; //存储每一帧的图像 capture >> frame; //读取当前帧 Mat fhsv; cvtColor(frame,fhsv,COLOR_BGR2HSV); //将图像转换为HSV模型 inRange(fhsv,Scalar(minh,mins,minv),Scalar(maxh,maxs,maxv),special); //找寻在要求区间内的颜色 imshow("ABC",special); if(waitKey(30) >= 0)break; } return 0; }