OpenCV图像分割.docx

上传人:b****5 文档编号:8510263 上传时间:2023-01-31 格式:DOCX 页数:13 大小:661.40KB
下载 相关 举报
OpenCV图像分割.docx_第1页
第1页 / 共13页
OpenCV图像分割.docx_第2页
第2页 / 共13页
OpenCV图像分割.docx_第3页
第3页 / 共13页
OpenCV图像分割.docx_第4页
第4页 / 共13页
OpenCV图像分割.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

OpenCV图像分割.docx

《OpenCV图像分割.docx》由会员分享,可在线阅读,更多相关《OpenCV图像分割.docx(13页珍藏版)》请在冰豆网上搜索。

OpenCV图像分割.docx

OpenCV图像分割

实验概述

【实验目的及要求】

图像分割

【实验原理】

 图像分割

 【实验环境】

VisualC++6.0 

Xvid

 

实验内容

【实验方案设计】

 先根据要求查询资料通过上网查到需要的信息

然后整合做出计划性的步骤 

 

【实验过程】

Contour:

Houghcircles:

Houghlines:

3.源程序

Contour:

#include"cv.h"

#include"highgui.h"

intmain(intargc,char**argv)

{

IplImage*src;

//第一条命令行参数确定了图像的文件名。

if(argc==2&&(src=cvLoadImage(argv[1],0))!

=0)

{

IplImage*dst=cvCreateImage(cvGetSize(src),8,3);

CvMemStorage*storage=cvCreateMemStorage(0);

CvSeq*contour=0;

cvThreshold(src,src,1,255,CV_THRESH_BINARY);

cvNamedWindow("Source",1);

cvShowImage("Source",src);

cvFindContours(src,storage,&contour,sizeof(CvContour),CV_RETR_CCOMP,CV_CHAIN_APPROX_SIMPLE);

cvZero(dst);

for(;contour!

=0;contour=contour->h_next)

{

CvScalarcolor=CV_RGB(rand()&255,rand()&255,rand()&255);

/*用1替代CV_FILLED所指示的轮廓外形*/

//cvDrawContours(dst,contour,color,color,-1,CV_FILLED,8);

cvDrawContours(dst,contour,color,color,-1,1,8);

}

cvNamedWindow("Components",1);

cvShowImage("Components",dst);

cvWaitKey(0);

}

}

Houghcircles:

#include

#include

#include

intmain(intargc,char**argv)

{

IplImage*img;

if(argc==2&&(img=cvLoadImage(argv[1],1))!

=0)

{

IplImage*gray=cvCreateImage(cvGetSize(img),8,1);

CvMemStorage*storage=cvCreateMemStorage(0);

cvCvtColor(img,gray,CV_BGR2GRAY);

cvSmooth(gray,gray,CV_GAUSSIAN,9,9);//smoothit,otherwisealotoffalsecirclesmaybedetected

CvSeq*circles=cvHoughCircles(gray,storage,CV_HOUGH_GRADIENT,2,gray->height/4,200,100);

inti;

for(i=0;itotal;i++)

{

float*p=(float*)cvGetSeqElem(circles,i);

cvCircle(img,cvPoint(cvRound(p[0]),cvRound(p[1])),3,CV_RGB(0,255,0),-1,8,0);

cvCircle(img,cvPoint(cvRound(p[0]),cvRound(p[1])),cvRound(p[2]),CV_RGB(255,0,0),3,8,0);

}

cvNamedWindow("circles",1);

cvShowImage("circles",img);

cvWaitKey(0);

}

return0;

}

Houghlines:

/*这是一个命令行程序,以图像作为文件输入变量

编译时选择“#if1”或“#if0”,可以使用标准和概率HOUGH变换两种方法*/

#include

#include

#include

intmain(intargc,char**argv)

{

IplImage*src;

if(argc==2&&(src=cvLoadImage(argv[1],0))!

=0)

{

IplImage*dst=cvCreateImage(cvGetSize(src),8,1);

IplImage*color_dst=cvCreateImage(cvGetSize(src),8,3);

CvMemStorage*storage=cvCreateMemStorage(0);

CvSeq*lines=0;

inti;

cvCanny(src,dst,50,200,3);

cvCvtColor(dst,color_dst,CV_GRAY2BGR);

#if1

lines=cvHoughLines2(dst,storage,CV_HOUGH_STANDARD,1,CV_PI/180,150,0,0);

for(i=0;itotal;i++)

{

float*line=(float*)cvGetSeqElem(lines,i);

floatrho=line[0];

floattheta=line[1];

CvPointpt1,pt2;

doublea=cos(theta),b=sin(theta);

if(fabs(a)<0.001)

{

pt1.x=pt2.x=cvRound(rho);

pt1.y=0;

pt2.y=color_dst->height;

}

elseif(fabs(b)<0.001)

{

pt1.y=pt2.y=cvRound(rho);

pt1.x=0;

pt2.x=color_dst->width;

}

else

{

pt1.x=0;

pt1.y=cvRound(rho/b);

pt2.x=cvRound(rho/a);

pt2.y=0;

}

cvLine(color_dst,pt1,pt2,CV_RGB(255,0,0),1,8);

}

#else

lines=cvHoughLines2(dst,storage,CV_HOUGH_PROBABILISTIC,1,CV_PI/180,280,30,10);

for(i=0;itotal;i++)

{

CvPoint*line=(CvPoint*)cvGetSeqElem(lines,i);

cvLine(color_dst,line[0],line[1],CV_RGB(255,0,0),1,8,0);

}

#endif

cvNamedWindow("Source",1);

cvShowImage("Source",src);

cvNamedWindow("Hough",1);

cvShowImage("Hough",color_dst);

cvWaitKey(0);

}

}

【结果】

1.编写程序

Contour:

Houghcircles:

Houghlines:

2.图片

Contour:

Houghcircles:

Houghlines:

小结

图像分割

图像分割是图像处理这门学科中的基础难题,,图像分割是图像处理领域和计算机视觉中的基本而关键的问题。

其目的就是将人们感兴趣的目标从图像背景中提取出来,为后续的分类、跟踪、识别、处理等提供基础。

由于图像分割的重要性,对图像研究就显得格外重要。

指导教师评语及成绩

评语:

 

 

 

 

 

成绩:

          指导教师签名:

                                              批阅日期:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1