opencv c++学习七(颜色测试)

目录

1.hsv颜色空间

2.颜色检测(inRange)

函数原型:

函数解释:

 3.轨迹条(Trackbar)

 

创建轨迹条 --- creatTrackbar函数


1.hsv颜色空间

H(色调):0~180

S(饱和度):0~255

V(亮度):0~255

2.颜色检测(inRange)

函数原型:

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;
}

 3.轨迹条(Trackbar)

创建轨迹条 --- creatTrackbar函数

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;
}

你可能感兴趣的:(opencv,c++,计算机视觉)