OpenCV图像骨架提取.docx

上传人:小飞机 文档编号:3162315 上传时间:2023-03-11 格式:DOCX 页数:4 大小:37.19KB
返回 下载 相关 举报
OpenCV图像骨架提取.docx_第1页
第1页 / 共4页
OpenCV图像骨架提取.docx_第2页
第2页 / 共4页
OpenCV图像骨架提取.docx_第3页
第3页 / 共4页
OpenCV图像骨架提取.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《OpenCV图像骨架提取.docx》由会员分享,可在线阅读,更多相关《OpenCV图像骨架提取.docx(4页珍藏版)》请在三一办公上搜索。

1、OpenCV图像骨架提取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

2、, 0, 0, 0, -1,-1,-1,-1,-1 ; float L45= 0,-1,-1, 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 ; s

3、rc=cvLoadImage(OpenCVKasvandTest.png,0); distsrc=cvCreateImage(cvGetSize(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);

4、 out=cvCreateImage(cvGetSize(src),IPL_DEPTH_32F,1); /kernel建立矩阵卷积核 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); /过滤,其实就是卷积

5、cvFilter2D(distsrc,S00,&kern00); cvFilter2D(distsrc,S45,&kern45); cvFilter2D(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

6、+ y* S00-widthStep)x, (float*)(S45-imageData + y* S45-widthStep)x), MAX(float*)(S90-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); cvNam

7、edWindow(S45,1); cvNamedWindow(S90,1); cvNamedWindow(S135,1); cvNamedWindow(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); cvSave

8、Image(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备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号