OpenCV图像骨架提取

上传人:碎****木 文档编号:220861688 上传时间:2021-12-09 格式:DOCX 页数:4 大小:40.44KB
返回 下载 相关 举报
OpenCV图像骨架提取_第1页
第1页 / 共4页
OpenCV图像骨架提取_第2页
第2页 / 共4页
OpenCV图像骨架提取_第3页
第3页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《OpenCV图像骨架提取》由会员分享,可在线阅读,更多相关《OpenCV图像骨架提取(4页珍藏版)》请在金锄头文库上搜索。

1、OpenCV 图像骨架提取/*/* 提取骨架*/*/ #include #include int main(void)IplImage *src;IplImage *distsrc;IplImage *out;IplImage *S00;IplImage *S45;IplImage *S90;IplImage *S135;CvMat kern00, kern45, kern90, kern135; float Smax=0;float L0=-1,-1,-1,-1,-1,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,-1,-1,-1,-1,-1;float L45=0,-1,-1

2、, 0, 2,-1,-1, 0, 2, 0,-1, 0, 2, 0,-1,0, 2, 0,-1,-1,2, 0,-1,-1, 0;float L90=-1, 0, 2, 0,-1,-1, 0, 2, 0,-1,-1, 0, 2, 0,-1,-1, 0, 2, 0,-1,-1, 0, 2, 0,-1;float L135=2, 0,-1,-1, 0,0, 2, 0,-1,-1,-1, 0, 2, 0,-1,-1,-1, 0, 2, 0,0,-1,-1, 0, 2;src=cvLoadImage(“OpenCVKasvandTest.png“,0); distsrc=cvCreateImage(c

3、vGetSize(src),IPL_DEPTH_32F,1); S00=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); S45=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); S90=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); S135=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); out=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1);/kernel 建立矩阵卷

4、积核cvInitMatHeader(&kern00,5,5,CV_32FC1,L0); cvInitMatHeader(&kern45,5,5,CV_32FC1,L45); cvInitMatHeader(&kern90,5,5,CV_32FC1,L90); cvInitMatHeader(&kern135,5,5,CV_32FC1,L135);/距离变换cvDistTransform(src,distsrc,CV_DIST_L2,5);/过滤,其实就是卷积cvFilter2D(distsrc,S00,&kern00); cvFilter2D(distsrc,S45,&kern45); cvF

5、ilter2D(distsrc,S90,&kern90); cvFilter2D(distsrc,S135,&kern135);/Smax = MAX(S00,S45,S90,S135)/ Smax, Smax = 0/ g = |/ 0 , others/for (int y=0; y height; y+) for (int x=0; xwidth; x+)Smax = MAX(MAX(float*)(S00-imageData + y* S00-widthStep)x, (float*)(S45-imageData + y* S45-widthStep)x),MAX(float*)(S9

6、0-imageData + y* S90-widthStep)x, (float*)(S135-imageData + y* S135-widthStep)x);(float*)(out-imageData + y* out-widthStep)x = Smax 0 ? Smax: 0.0;cvThreshold(out,out,7,1,CV_THRESH_BINARY); cvNamedWindow(“S00“,1); cvNamedWindow(“S45“,1); cvNamedWindow(“S90“,1); cvNamedWindow(“S135“,1); cvNamedWindow(

7、“out“,1);cvShowImage(“S00“,S00); cvShowImage(“S45“,S45); cvShowImage(“S90“,S90); cvShowImage(“S135“,S135); cvShowImage(“out“,out); cvWaitKey(0);cvCvtScaleAbs(S00,src,32,0); cvSaveImage(“S00.png“,src); cvCvtScaleAbs(S45,src,32,0); cvSaveImage(“S45.png“,src); cvCvtScaleAbs(S90,src,32,0); cvSaveImage(“S90.png“,src); cvCvtScaleAbs(S135,src,32,0); cvSaveImage(“S135.png“,src); cvCvtScaleAbs(out,src,255,0); cvSaveImage(“out.png“,src);return 0;对于简洁构造的图形可以简洁运用上述方法即可得到较好的骨架,对于略微简单的图形,或者干扰较大的图形,可以通过对原图进展屡次卷积,使得骨架信息变得更加突出,一般 34 次卷积效果较好。原图水平方向45 度方向90 度方向135 度方向最终结果曾经的这一天.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号