这两天在研究opencv来对木材导管进行检测
大致的步骤是1.首先都读取的图片进行平滑处理
2.对图片进行腐蚀
3.运用Canny算子把图像转换成二值图,并提取边缘
4.对图片进行膨胀处理
5.依次读取每个轮廓,并筛选出面积合理的轮廓,也就是图像中的导管
以上就是导管筛选的大致步骤,显示效果还行,就是有些破裂的导管无法检测出来,目前还在改进中。
大致的步骤是1.首先都读取的图片进行平滑处理
2.对图片进行腐蚀
3.运用Canny算子把图像转换成二值图,并提取边缘
4.对图片进行膨胀处理
5.依次读取每个轮廓,并筛选出面积合理的轮廓,也就是图像中的导管
traverse=cvStartFindContours(cannyImage,storage,sizeof(CvContour),CV_RETR_CCOMP,CV_CHAIN_APPROX_SIMPLE);
contours=cvFindNextContour(traverse);
while (contours!=NULL)
{
i++;
if (cvContourArea(contours,CV_WHOLE_SEQ)>1500)
{
cvDrawContours(myImage,contours,CV_RGB(255,255,255),CV_RGB(255,0,231),2,1,CV_AA);
}
contours=cvFindNextContour(traverse);
}
printf("%d",i);
contours = cvEndFindContours(&traverse);
contours=cvFindNextContour(traverse);
while (contours!=NULL)
{
i++;
if (cvContourArea(contours,CV_WHOLE_SEQ)>1500)
{
cvDrawContours(myImage,contours,CV_RGB(255,255,255),CV_RGB(255,0,231),2,1,CV_AA);
}
contours=cvFindNextContour(traverse);
}
printf("%d",i);
contours = cvEndFindContours(&traverse);
以上就是导管筛选的大致步骤,显示效果还行,就是有些破裂的导管无法检测出来,目前还在改进中。