1、摘要
前期基于边缘提取、分割及孔洞填充的内容现在做一个优化。
opencv中边缘提取、孔洞填充以及阈值分割的实际应用
https://blog.csdn.net/fei10love/article/details/103097532?spm=1001.2014.3001.5501
2、处理思路
【1】首先进行颜色空间转换,将原RGB转成CSV;效果图如下
| 原图(RGB)
空间转换后图片(HSV)
|
【2】然后将HSV图片进行通道分离,然后再对分离后的图片进行分割;
| HSV通道分离后图片
分割后图片
|
【3】然后将RGB图片通道分离减分割后图片得到分割

3、代码实现
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
string sPath = "C:\\Users\\Administrator\\Desktop\\img\\segment.png";
Mat src = imread(sPath);
Mat srcimg;
src.copyTo(srcimg);
Mat hsvSrc;
cvtColor(src, hsvSrc, CV_BGR2HSV);
vector<Mat> vImg;
split(hsvSrc, vImg);
Mat img1 = vImg[0];
Mat seg2img;
inRange(img1, Scalar::all(90), Scalar::all(120), seg2img);
vector<Mat> vImgs;
split(srcimg, vImgs);
vector<Mat> vResult(3);
vResult[0] = vImgs[0] - seg2img;
vResult[1] = vImgs[1] - seg2img;
vResult[2] = vImgs[2] - seg2img;
Mat resultImg;
merge(vResult, resultImg);
imshow("show image", resultImg);
waitKey(0);
system("pause");
return 0;
}
对比以前的分割方案,现在分割效果跟代码可读性有较大提升。
本文介绍了一种基于HSV颜色空间的图像分割方法,并通过代码实现了从RGB到HSV的转换、HSV通道分离以及后续的图像分割过程。相较于之前的方案,此方法在分割效果和代码可读性上都有显著提升。





被折叠的 条评论
为什么被折叠?



