OpenCV-利用函数inRange进行颜色分割(针对HSV颜色空间)
来源:互联网 发布:奢侈品活动策划 知乎 编辑:程序博客网 时间:2024/06/08 18:31
我们可以利用inRange函数,通过调节图像颜色信息(H)、饱和度(S)、亮度(V)区间选择我们需要的图像区域:
#include<opencv2/core.hpp>#include<opencv2/highgui.hpp>#include<opencv2/imgproc.hpp>using namespace cv;#include<iostream>#include<string>using namespace std;//输入图像Mat img;//灰度值归一化Mat bgr;//HSV图像Mat hsv;//色相int hmin = 0;int hmin_Max = 360;int hmax = 360;int hmax_Max = 360;//饱和度int smin = 0;int smin_Max = 255;int smax = 255;int smax_Max = 255;//亮度int vmin = 106;int vmin_Max = 255;int vmax = 250;int vmax_Max = 255;//显示原图的窗口string windowName = "src";//输出图像的显示窗口string dstName = "dst";//输出图像Mat dst;//回调函数void callBack(int, void*){//输出图像分配内存dst = Mat::zeros(img.size(), CV_32FC3);//掩码Mat mask;inRange(hsv, Scalar(hmin, smin / float(smin_Max), vmin / float(vmin_Max)), Scalar(hmax, smax / float(smax_Max), vmax / float(vmax_Max)), mask);//只保留for (int r = 0; r < bgr.rows; r++){for (int c = 0; c < bgr.cols; c++){if (mask.at<uchar>(r, c) == 255){dst.at<Vec3f>(r, c) = bgr.at<Vec3f>(r, c);}}}//输出图像imshow(dstName, dst);//保存图像dst.convertTo(dst, CV_8UC3, 255.0, 0);imwrite("HSV_inRange.jpg", dst);}int main(int argc, char*argv[]){//输入图像img = imread(argv[1], IMREAD_COLOR);if (!img.data || img.channels() != 3)return -1;imshow(windowName, img);//彩色图像的灰度值归一化img.convertTo(bgr, CV_32FC3, 1.0 / 255, 0);//颜色空间转换cvtColor(bgr, hsv, COLOR_BGR2HSV);//定义输出图像的显示窗口namedWindow(dstName, WINDOW_GUI_EXPANDED);//调节色相 HcreateTrackbar("hmin", dstName, &hmin, hmin_Max, callBack);createTrackbar("hmax", dstName, &hmax, hmax_Max, callBack);//调节饱和度 ScreateTrackbar("smin", dstName, &smin, smin_Max, callBack);createTrackbar("smax", dstName, &smax, smax_Max, callBack);//调节亮度 VcreateTrackbar("vmin", dstName, &vmin, vmin_Max, callBack);createTrackbar("vmax", dstName, &vmax, vmax_Max, callBack);callBack(0, 0);waitKey(0);return 0;}运行结果如下:
可以通过调节不同的颜色、饱和度、亮度区间来定义信息
阅读全文
0 0
- OpenCV-利用函数inRange进行颜色分割(针对HSV颜色空间)
- OpenCV-利用函数inRange进行颜色分割(HLS颜色分割)
- OpenCV中HSV颜色空间
- OpenCV HSV颜色空间基本颜色范围
- OpenCV 利用hsv颜色空间的车牌底色检测
- opencv学习笔记---hsv颜色空间
- opencv学习笔记---hsv颜色空间
- opencv hsv cvtColor颜色空间转换
- Opencv映射到HSV颜色空间
- OpenCV颜色空间——HSV颜色空间
- 【opencv】在hsv颜色空间识别区域颜色
- HSV颜色空间颜色阈值
- HSV颜色空间
- HSV颜色空间
- 关于HSV颜色空间
- 颜色空间---HSV
- HSV颜色空间
- HSV颜色空间
- 20170705
- C++多态
- 解锁glide 4.0使用 新姿势
- http-------待看
- 第四章 JavaScript 函数
- OpenCV-利用函数inRange进行颜色分割(针对HSV颜色空间)
- 常用正则表达式
- TabLayout 导航条与导航标题文字对齐
- XSLT解析JSON字符串
- Delphi的对象注销方法Destroy和free
- (有密码Access)Access无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开
- Spring定时任务的几种实现
- 如何为VMware的多台虚拟机绑定IP地址
- c++ 重载new和delete