专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 图形/图像

opencv里的CvConnectedComp解决方案

发布时间:2011-06-27 19:54:11 文章来源:www.iduyao.cn 采编人员:星星草
opencv里的CvConnectedComp
我使用cvPyrSegmentation对一副图像进行色彩分割,返回的结果有一个CvConnectedComp
它包含了各个连通域的信息,我现在想对每个连通域进行遍历,请问如何操作。。。
谢谢

------解决方案--------------------
你这个是个CvSeq序列吧,每个元素是CvConnectedComp类型?

CvSeq是跟CvMemStorage搭配使用的,数据存储在CvMemStorage里,怎么遍历跟c++的STL容器差不多,简单说就是个数组,你看看CvSeq的成员函数就知道了

CvConnectedComp结构:
  typedef struct CvConnectedComp
  {
    double area;
    CvScalar value;
    CvRect rect;
    CvSeq* contour;
  } CvConnectedComp;

openCV的问题去这里看比较好:http://www.opencv.org.cn/
------解决方案--------------------
好像cvPyrSegmentation得到的CvConnectedComp 并不包含contour信息,估计你得对每个区域转成二值图像来提取,或者直接在分割图上提取
typedef struct CvConnectedComp
{
    double area; /* 连通域的面积 */
    float value; /* 分割域的灰度缩放值 */
    CvRect rect; /* 分割域的 ROI */
} CvConnectedComp;

------解决方案--------------------
引用:
没听太懂。。。 
转换为二值图像是什么意思,连通区域可能有很多啊。。。

你想要哪个区域的轮廓就以这个区域的value来把图像二值化,然后用openCV的函数提取
------解决方案--------------------
cvThreshold用来二值化图像,你可以将你所需要提取的区域置为白色,其他区域置黑,然后二值化,然后用FindContours函数来获取轮廓。openCV带的有提取轮廓的示例:squares (CVPR01_course)


------解决方案--------------------
引用:
比方吧,我想把彩色分割后标号为2的区域进行反色,该怎么操作?谢谢~

这个不是很简单吗?假设CvConnectedComp data存的是标号2区域,则
CvScalar color = data.value;
//填充此区域为白色(最大灰度色,用于二值化)
cvFloodFill( color_img, seed, color, CV_RGB( 255,255, 255 );
//把此彩色图转为灰度图
cvCvtColor( color_img, gray_img, CV_BGR2GRAY );
//设定阈值二值化
cvThreshold(gray_img,bin_img,threshold,255, CV_THRESH_BINARY );//threshold可以设到250-254

这就得到8位的bin_img了,你所要的区域是255,别的区域都是0。然后用FindContours函数就可以得到轮廓集了
------解决方案--------------------
引用:
data.value表示的是对这个value代表的区域进行填充么? 
seed怎么处理? 

value是RGBA空间描述,其实就是RGB+A,A是透明度alpha
标号是你CvSeq链表内存的数据标号

seed是区域内种子点,你既然需要提取某个区域的轮廓,那你知道是哪个区域吧?
如果是要提取某个像素所在的区域,那就用cvfloodfill种子填充法
如果只是提取分割后某颜色(value)的区域,可以转为灰度后用两次cvThreshold来只保留你所要的区域,不过如果区域多的话可能会有同灰度区域;最好的是自己遍历下图像数据,将颜色不同的图像数据全置0然后转为灰度再用cvThreshold来获取所需区域
lpBits = (uchar*)img1->imageData;
for(int j=0;j<height;j++)
for(int i=0;i<width;i++)
..



友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: