赞
踩
作者:RayChiu_Labloy
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
我们平时在做图像边缘提取的时候一般经常在RGB空间做图像二值化然后阈值处理后提取边缘,大多数情况是效果不错的,但是有些图像对比度和色彩区分度不是很好,那么RGB空间处理效果就不够用了。
我们这这种情况下可转成HSV色彩空间,提取其三个维度的图像,然后做权重加和处理,再经过滤波后的直接canny出来的边缘效果会非常好。
江湖我雷哥,人狠话不多,桑代码:
- cv::Mat HSV;
- cv::cvtColor(imgSmall, HSV, COLOR_BGR2HSV);
- std::vector<cv::Mat> splitImage;
- cv::split(HSV, splitImage);
- cv::Mat H, S, V;
-
- H = splitImage[0];
- S = splitImage[1];
- V = splitImage[2];
-
- cv::Mat addImage = 0.3 * V + 0.7 * H; //加权融合处理
- //cv::addWeighted();
- cv::Mat filter;
-
- cv::Mat filter_v = 255 - addImage; //前景目标为白色
- cv::medianBlur(filter_v, filter, 9); //中值滤波使边缘均衡清晰
- cv::threshold(filter, imgThresh, 190, 255, THRESH_BINARY);
- cv::Canny(imgThresh, imgCny, mControlParams_[0], mControlParams_[1], mControlParams_[2], true);
效果图那是贼棒!
(加权滤波后的图 )
(canny后的效果图)
边缘提取这一块,你说气人不!!!
【如果对您有帮助,交个朋友给个一键三连吧,您的肯定是我博客高质量维护的动力!!!】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。