Zedboard甲诊opencv图像处理(一).doc

Zedboard甲诊opencv图像处理(一).doc

ID:27524735

大小:28.00 KB

页数:5页

时间:2018-12-04

Zedboard甲诊opencv图像处理(一).doc_第1页
Zedboard甲诊opencv图像处理(一).doc_第2页
Zedboard甲诊opencv图像处理(一).doc_第3页
Zedboard甲诊opencv图像处理(一).doc_第4页
Zedboard甲诊opencv图像处理(一).doc_第5页
资源描述:

《Zedboard甲诊opencv图像处理(一).doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Zedboard甲诊opencv图像处理(一)  首先基于前面的工作,通过调整已经很好的把指甲边缘显示出来了,不曾想我却从那时开始走上了弯路,使用matlab去处理静态图片,以获得更好的指甲和特征提取效果,结果就是,效果不理想(光照影响)并且用到摄像头上来一点都不实用。辛辛苦苦的研究了n多的图像处理算法,几乎把边缘提取的算法全部过了一遍,阅读了不下100篇论文,还折腾出B样条曲线拟合进行边缘连接,现在想想太可笑了,其实OpenCV现有的图像处理方法已经可以满足我提取指甲的要求了,只不过我需要进行合理的组合搭配,从而实现我想要的效果。  总有那么一句话叫:摸着石头过河。我今

2、天算是体会到了,不过中间老板还让写创业计划,总之,该回归正道了!  接着之前的canny提取的边缘,我想进一步提取出指甲,把其他背景都省略,这样就只留下指甲了,从而进一步提取特征。首先我想到的是findContours函数及其轮廓操作  //!retrievescontoursandthehierarchicalinformaTIonfromblack-n-whiteimage.CV_EXPORTS_WvoidfindContours(InputOutputArrayimage,OutputArrayOfArrayscontours,OutputArrayhierarch

3、y,intmode,intmethod,Pointoffset=Point());  //!retrievescontoursfromblack-n-whiteimage.CV_EXPORTSvoidfindContours(InputOutputArrayimage,OutputArrayOfArrayscontours,intmode,intmethod,Pointoffset=Point());  其中image为输入的binaryimage,输出是一个向量数组,每个向量是Points类型的指针向量数组。这个数组会用做后面的轮廓处理。  mode代表提取轮廓的类型,

4、可以是以下几种类型//CV_RETR_LIST,//retrieveallcontours//CV_RETR_EXTERNAL,//retrievetheexternalcontours//CV_RETR_TREE,//retrieveallcontoursintreeformat//CV_RETR_CCOMPissimilarbutlimitsthehierarchyattwolevels.建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。  method代表轮廓点的类型,可以有//CV_CHAIN_

5、APPROX_NONE//allpixelsofeachcontours存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1//CV_CHAIN_APPROX_SIMPLE//onlytheendpointswouldbeincludedforhorizontal,verTIcal,ordiagonalcontours.压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息  最后一个不用管先,然后就是一个OutputArrayhierarchy代表分层结构,h

6、ierarchy,//hierarchicalrepresentaTIon  接下来用cv::Matresult(image.size(),CV_8U,cv::Scalar(255));cv::drawContours(result,contours,-1,//drawallcontourscv::Scalar(0),//inblack2);//withathicknessof2  出来的效果还不错,利用黑背景,能将指甲分离出来,但是接下来的分离过程除了错误。就是在我将多余的或者不符合要求的轮廓去除过程中报错了  //Eliminatetooshortortoolongc

7、ontoursintcmin=100;//minimumcontourlengthintcmax=1000;//maximumcontourlengthstd::vector>::const_iteratoritc=contours.begin();while(itc!=contours.end()){if(itc->size()size()>cmax)itc=contours.erase(itc);else++itc;}  错误如下:错误:nomatchingfuncTIonforcallto‘std::vector>>::

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。