使用inRange进行阈值操作 比眉伴天荒 2022-04-02 15:36 172阅读 0赞 ## HSV色域空间 ## * Hue(色调):色彩的基本属性,就是平常说的颜色的名称,如红色、黄色等 * Saturation(饱和度):色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。 * Value(亮度值):描述的是色彩的亮度,取值0-1,0 就是黑色,1(饱和度为0)为白色。 ![20181227103051955.jpg][] -------------------- ## 官方代码 ## #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; const int max_value_H = 360/2; //因为进行8位存储,所以除以2 const int max_value = 255; const cv::String window_capture_name = "Video Capture"; const cv::String window_detection_name = "Object Detection"; int low_H = 0, low_S = 0, low_V = 0; int high_H = max_value_H, high_S = max_value, high_V = max_value; static void on_low_H_thresh_trackvbar(int, void*) { low_H = min(high_H-1,low_H);//防止最大值小于最小值 setTrackbarPos("Low H",window_detection_name,low_H); } static void on_high_H_thresh_trackbar(int, void*) { high_H = max(high_H, low_H+1); setTrackbarPos("High H",window_detection_name,high_H); } static void on_low_S_thresh_trackbar(int, void*) { low_S = min(high_S-1, low_S); setTrackbarPos("Low S",window_detection_name,low_S); } static void on_high_S_thresh_trackbar(int, void*) { high_H = max(high_S,low_S+1); setTrackbarPos("High S",window_detection_name,high_S); } static void on_low_V_thresh_trackbar(int, void*) { low_V = min(high_V-1, low_V); setTrackbarPos("Low V",window_detection_name,low_V); } static void on_high_V_thresh_trackvar(int, void*) { high_V = max(high_V,low_V+1); setTrackbarPos("High V",window_detection_name,high_V); } int main(void) { VideoCapture cap(0); //打开摄像头 namedWindow(window_capture_name); namedWindow(window_detection_name); createTrackbar("Low H",window_detection_name,&low_H,max_value_H,on_high_H_thresh_trackbar); createTrackbar("High H",window_detection_name,&high_H,max_value_H,on_high_H_thresh_trackbar); createTrackbar("Low S",window_detection_name,&low_S,max_value,on_low_S_thresh_trackbar); createTrackbar("High S",window_detection_name,&high_S,max_value,on_high_S_thresh_trackbar); createTrackbar("Low V",window_detection_name,&low_V,max_value,on_low_V_thresh_trackbar); createTrackbar("High V",window_detection_name,&high_V,max_value,on_high_V_thresh_trackvar); Mat frame, frame_HSV, frame_threshold; while(true) { cap >> frame; //捕获的每帧给frame if(frame.empty()) { break; } cv::cvtColor(frame,frame_HSV,cv::COLOR_BGR2HSV); //转化到HSV空间 //进行阈值操作,输出图像为CV_8UC1 inRange(frame_HSV,Scalar(low_H,low_S,low_V),Scalar(high_H,high_S,high_V),frame_threshold); imshow(window_capture_name,frame); imshow(window_detection_name,frame_threshold); char key=(char)waitKey(30); //每等待30ms,如果是ESC,退出 if(key == 27) break; } return 0; }; -------------------- 结果: ![在这里插入图片描述][20181227105924529.png] ## OpenCV API ## void cv::inRange ( InputArray src, //输入图像 InputArray lowerb, //低阈值 InputArray upperb, //高阈值 OutputArray dst //输出图像(same size as src),**CV\_8UC1** ) dst(i) 为1,如果输入图像的像素在lowerb和upperb形成的 1D,2D,3D的box里面,否则为0, 比如1D,则lowerb和upperb只是一维值,如果是3D,则lowerb和upperb只是三维值,输入图像也是三维,只要每个元素再lowerb和upperb组成的3D box里面,输出就是1,所以输出是CV\_8UC1 [20181227103051955.jpg]: /images/20220402/3aa3db9359824b9a87b0685610886689.png [20181227105924529.png]: /images/20220402/45fca9070e7d4d38ac7c2efdaf3cf939.png
相关 使用Java进行数据库操作:CRUD操作问题 在Java中,我们可以使用各种数据库连接工具,如JDBC(Java Database Connectivity)。以下是对CRUD操作的示例: 1. 创建(CREATE): ╰+哭是因爲堅強的太久メ/ 2024年09月11日 16:18/ 0 赞/ 28 阅读
相关 使用不同进制的阈值对图像进行阈值处理 使用不同进制的阈值对图像进行阈值处理 图像阈值处理是数字图像处理中常用的一种技术,它可以将图像中的像素值与预先设定的阈值进行比较,并根据比较结果对像素进行二值化处理。在本文中 矫情吗;*/ 2023年10月15日 19:23/ 0 赞/ 9 阅读
相关 阈值化 阈值可以被视作最简单的图像分割方法属于像素级分割。设定阈值后图像中每个像素预期比较选择保留或剔除,从而达到所需要的部分图像。 阈值是对灰度图像进行操作得到的二值图像( 素颜马尾好姑娘i/ 2022年06月17日 08:07/ 0 赞/ 158 阅读
相关 阈值操作 阈值操作 OpenCV 提供了 [cv::threshold][cv_threshold],一共有5种不同的阈值操作 蓝色的 左手的ㄟ右手/ 2022年04月03日 06:54/ 0 赞/ 184 阅读
相关 使用inRange进行阈值操作 HSV色域空间 Hue(色调):色彩的基本属性,就是平常说的颜色的名称,如红色、黄色等 Saturation(饱和度):色彩的纯度,越高色彩越纯,低则逐渐变灰 比眉伴天荒/ 2022年04月02日 15:36/ 0 赞/ 173 阅读
相关 使用Hibernate进行CRUD操作 CRUD操作 1、使用hibernate把数据库模型和java对象进行ORM映射,通过配置文件或者注解完成。 2、程序通过hibernate提供的API进行CRUD, 野性酷女/ 2022年02月17日 17:21/ 0 赞/ 309 阅读
相关 使用StringRedisTemplate进行redis连接操作 1. 引入jar,需要jar有三个,如下 <dependency> <groupId>org.springframework.data</g 小灰灰/ 2022年01月14日 23:51/ 0 赞/ 763 阅读
相关 使用HBase shell进行表操作 掌握使用HBase shell进行表操作 (一). 实验环境 (章鱼大数据)HBase (二). 实验步骤 1. 创建student表,表结构包含info和co 梦里梦外;/ 2021年12月19日 16:39/ 0 赞/ 314 阅读
相关 【opencv学习笔记】015之基本阈值操作 目录 一、前言 二、阈值操作 1、啥是阈值 2、阈值有哪些 1.阈值二值化 2.阈值反二值化 3.截断 4.阈值取零 5.阈值反取零 3、API与代码实战 ╰+攻爆jí腚メ/ 2021年08月26日 17:50/ 0 赞/ 452 阅读
还没有评论,来说两句吧...