opencv学习 Color Detection

目录

一、HSV颜色空间

二、颜色检测(inRange函数)

 三、轨迹条


一、HSV颜色空间

H(色调):0~180

S(饱和度):0~255

V(亮度):0~255

二、颜色检测(inRange函数)

inRange(imgHSV, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV), imgThresholded); //Threshold the image

函数进行颜色检测,这个函数的作用就是检测src图像的每一个像素是不是在lowerb和upperb之间,如果是,这个像素就设置为255(白),并保存在dst图像中,否则为0(黑)。

int main() {

	string path = "C:\\Users\\Rong\\Desktop\\Resources\\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, COLOR_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。 

int hmin=0, smin=0, vmin=0, hmax=0, smax=0, vmax=0;
int main() {

	string path = "C:\\Users\\Rong\\Desktop\\Resources\\shapes.png";
	Mat Img = imread(path);
	
	Mat src, dst;
	cvtColor(Img, src, COLOR_BGR2HSV);

	//每次在轨迹条上 改变的是指针指向的变量的值
	namedWindow("TrackBar",(700,700));
	createTrackbar("Hmin", "TrackBar", &hmin, 180);
	createTrackbar("Hmax", "TrackBar", &hmax, 180);
	createTrackbar("Smin", "TrackBar", &smin, 255);
	createTrackbar("Smax", "TrackBar", &smax, 255);
	createTrackbar("Vmin", "TrackBar", &vmin, 255);
	createTrackbar("Vmax", "TrackBar", &vmax, 255);
	

	while (true) {
		//所以我们可以检测当那些轨迹条上的变量变化时 图像长什么样子
		Scalar lower(hmin, smin, vmin);
		Scalar upper(hmax, smax, vmax);

		inRange(src, lower, upper, dst);
		imshow("Image src", src);
		imshow("Image dst", dst);
		//注:这里是1
		waitKey(1);
	}

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值