OpenCV中如何对二值图保证找到所有的外轮廓?

xinqiao2008 2011-02-17 10:21:29
//pImage已创建有图像
CvSeq *cont = NULL;
CvMemStorage *stor = NULL;
stor = cvCreateMemStorage(0);
cont = cvCreateSeq(0, sizeof(CvSeq), sizeof(CvPoint), stor);
IplImage *pTempImage = cvCreateImage(cvSize(pImage->width, pImage->height), IPL_DEPTH_8U, 1);
//清空
cvZero(pTempImage);
//转为灰度图
cvCvtColor(pImage, pTempImage, CV_BGR2GRAY);
//二值化
cvThreshold(pTempImage, pTempImage, 23, 255.0, CV_THRESH_BINARY);
//得到外轮廓
const unsigned long ulContourCount = cvFindContours(pTempImage,stor,&cont,sizeof(CvContour),CV_RETR_EXTERNAL,CV_CHA IN_APPROX_SIMPLE, cvPoint(0, 0));
CvRect ContourRect;
for(int i=0; cont && i<ulContourCount; cont = cont->h_next, i++)
{
//轮廓白色像素总数
ContourPixelCount = u32(fabs(cvContourArea(cont, CV_WHOLE_SEQ)));
//提取外轮廓
ContourRect = cvBoundingRect(cont);
}
//略...

//对白色块状的像素块很容易找出来,但对不规则条状的白色像素块却找不出来?
...全文
356 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
某某9 2011-02-17
  • 打赏
  • 举报
回复
阈值选取不合理
xinqiao2008 2011-02-17
  • 打赏
  • 举报
回复
例图
http://hi.csdn.net/space-1892875-do-album-picid-743550-goto-up.html
处理后的图
http://hi.csdn.net/space-1892875-do-album-picid-743549-goto-down.html
xinqiao2008 2011-02-17
  • 打赏
  • 举报
回复
例图

处理后的图

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧