目录
1.hsv颜色空间
2.颜色检测(inRange)
函数原型:
函数解释:
3.轨迹条(Trackbar)
创建轨迹条 --- creatTrackbar函数
H(色调):0~180
S(饱和度):0~255
V(亮度):0~255
inRange(imgHSV, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV), imgThresholded); //Threshold the image
函数进行颜色检测,这个函数的作用就是检测src图像的每一个像素是不是在lowerb和upperb之间,如果是,这个像素就设置为255,并保存在dst图像中,否则为0。
#include
#include
#include
#include
using namespace cv;
using namespace std;
int main() {
string path = "resouces\\lambo.png";
Mat img = imread(path);
Mat imgHSV, mask;
int hmin = 0, smin = 110, vmin = 153;
int hmax = 19, smax = 240, vmax = 255;
cvtColor(img, imgHSV, CV_BGR2HSV);
Scalar lower(hmin, smin, vmin); //下限的颜色值
Scalar upper(hmax, smax, vmax); //上线的颜色值
inRange(imgHSV, lower, upper, mask);
imshow("Image", img);
imshow("Image HSV", imgHSV);
imshow("Image Mask", mask);
waitKey(0);
return 0;
}
int createTrackbar(conststring& trackbarname, conststring& winname, int* value, int count, TrackbarCallback onChange=0,void* userdata=0);
第一个参数:轨迹条的名字
第二个参数:窗口的名字
第三个参数:一个指向整型的指针,表示滑块的位置。
第四个参数:表示滑块可以达到的最大位置的值。PS:滑块最小的位置的值始终为0。
#include
#include
#include
#include
using namespace cv;
using namespace std;
int main() {
string path = "resouces\\lambo.png";
Mat img = imread(path);
Mat imgHSV, mask;
int hmin = 0, smin = 110, vmin = 153;
int hmax = 19, smax = 240, vmax = 255;
cvtColor(img, imgHSV, CV_BGR2HSV);
namedWindow("Trackbars", (640, 200));
createTrackbar("Hue Min", "Trackbars", &hmin, 179);
createTrackbar("Hue Max", "Trackbars", &hmax, 179);
createTrackbar("Sat Min", "Trackbars", &smin, 255);
createTrackbar("Sat Max", "Trackbars", &smax, 255);
createTrackbar("Val Min", "Trackbars", &vmin, 255);
createTrackbar("Val Max", "Trackbars", &vmax, 255);
while (true) {
Scalar lower(hmin, smin, vmin); //下限的颜色值
Scalar upper(hmax, smax, vmax); //上线的颜色值
inRange(imgHSV, lower, upper, mask);
imshow("Image", img);
imshow("Image HSV", imgHSV);
imshow("Image Mask", mask);
waitKey(1);
}
return 0;
}