Zedboard甲诊opencv图像处理(一)
_iterator;
而我抄袭的程序里面都是const_iterator,该过来之后就可以了。
现在的问题是,我该怎么取适当的值,使得只有指甲的轮廓保留下来,其余的省去。还是一步一步来吧,先把轮廓查找的过程搞清楚。
findContours经常与drawContours配合使用,用来将轮廓绘制出来。其中第一个参数image表示目标图像,第二个参数contours表示输入的轮廓组,每一组轮廓由点vector构成,第三个参数contourIdx指明画第几个轮廓,如果该参数为负值,则画全部轮廓,第四个参数color为轮廓的颜色,第五个参数thickness为轮廓的线宽,如果为负值或CV_FILLED表示填充轮廓内部,第六个参数lineType为线型,第七个参数为轮廓结构信息,第八个参数为maxLevel。
但是用在视频处理中,还是不行,所以我改为拍照处理,拍5张照片后重合为一张,效果如下:
虽然还不是很好,但我也只能勉强的继续往下走着先。这过程中涉及到一些Mat图像基本容器的处理,因为我是存储了5张图片,所以不能直接赋值,需要用cvcopyto函数。
capture.read(frame);
++flag;
switch(flag)
{
case1:
frame.copyTo(image1);
break;
case2:
frame.copyTo(image2);
break;
case3:
frame.copyTo(image3);
break;
case4:
frame.copyTo(image4);
break;
default:
flag=0;
break;
}
后然处理重合吧:
Mat edge1=edged(image1);
Mat edge2=edged(image2);
Mat edge3=edged(image3);
Mat edge4=edged(image4);
Mat edge;
Mat result;
cv::addWeighted(edge1,1,edge2,1,0.,edge);
cv::addWeighted(edge,1,edge3,1,0.,edge);
cv::addWeighted(edge,1,edge4,1,0.,edge);
接下来我准备进行多边形逼近或者其他手段把,把背景去除,然后特征提取。比较慢哈,不过最近听说一位美国留学的博士师兄在做视网膜诊病,和我这个甲诊有点类似之处哈,好歹给了我一点鼓励吧。