边缘提取Word文件下载.docx

上传人:b****5 文档编号:17981442 上传时间:2022-12-12 格式:DOCX 页数:8 大小:489.09KB
下载 相关 举报
边缘提取Word文件下载.docx_第1页
第1页 / 共8页
边缘提取Word文件下载.docx_第2页
第2页 / 共8页
边缘提取Word文件下载.docx_第3页
第3页 / 共8页
边缘提取Word文件下载.docx_第4页
第4页 / 共8页
边缘提取Word文件下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

边缘提取Word文件下载.docx

《边缘提取Word文件下载.docx》由会员分享,可在线阅读,更多相关《边缘提取Word文件下载.docx(8页珍藏版)》请在冰豆网上搜索。

边缘提取Word文件下载.docx

班级:

____指导教师:

____张广渊____

实验概述

【实验目的及要求】

本次试验的目的为图像的边缘提取。

【实验原理】

通过VC++连接openCV显示图像。

因为边缘和轮廓都位于灰度突变的地方。

所以锐化算法的实现是基于微分作用。

就是加强图像中景物的细节边缘和轮廓,使灰度反差增强。

【实验环境】

安装openCV

首先,将E:

\OpenCV\bin加入到环境变量PATH

然后,配置VC++环境

菜单Tools->

Options->

Directories:

选择includefiles,sourcefiles

Libraryfiles,在下方填入路径

建立新工程后,在工程设置里添加路径cxcore.libcv.libml.libcvaux.libhighgui.libcvcam.lib

实验内容

【实验过程】

(实验步骤、记录、数据、分析)

视频边缘提取代码如下

/*

程序名称:

laplace.c

功能:

从摄像头或者AVI文件中得到视频流,对视频流进行边缘检测,并输出结果。

*/

#include"

cv.h"

highgui.h"

#include<

ctype.h>

stdio.h>

intmain(intargc,char**argv)

{

IplImage*laplace=0;

IplImage*colorlaplace=0;

IplImage*planes[3]={0,0,0};

//多个图像面

CvCapture*capture=0;

//下面的语句说明在命令行执行程序时,如果指定AVI文件,那么处理从

//AVI文件读取的视频流,如果不指定输入变量,那么处理从摄像头获取

//的视频流

if(argc==1||(argc==2&

&

strlen(argv[1])==1&

isdigit(argv[1][0])))

capture=cvCaptureFromCAM(argc==2?

argv[1][0]-'

0'

:

0);

elseif(argc==2)

capture=cvCaptureFromAVI(argv[1]);

if(!

capture)

{

fprintf(stderr,"

Couldnotinitializecapturing...\n"

);

return-1;

}

cvNamedWindow("

Laplacian"

0);

//循环捕捉,直到用户按键跳出循环体

for(;

;

IplImage*frame=0;

inti;

frame=cvQueryFrame(capture);

frame)

break;

laplace)

for(i=0;

i<

3;

i++)

planes[i]=cvCreateImage(cvSize(frame->

width,frame->

height),8,1);

laplace=cvCreateImage(cvSize(frame->

height),

IPL_DEPTH_16S,1);

colorlaplace=cvCreateImage(cvSize(frame->

height),8,3);

cvCvtPixToPlane(frame,planes[0],planes[1],planes[2],0);

cvLaplace(planes[i],laplace,3);

//3:

aperture_size

cvConvertScaleAbs(laplace,planes[i],1,0);

//planes[]=ABS(laplace)

cvCvtPlaneToPix(planes[0],planes[1],planes[2],0,colorlaplace);

colorlaplace->

origin=frame->

origin;

cvShowImage("

colorlaplace);

if(cvWaitKey(10)>

=0)

cvReleaseCapture(&

capture);

cvDestroyWindow("

return0;

}

Canny获取边缘的代码:

charwndname[]="

Edge"

chartbarname[]="

Threshold"

intedge_thresh=1;

IplImage*image=0,*cedge=0,*gray=0,*edge=0;

//定义跟踪条的callback函数

voidon_trackbar(inth)

cvSmooth(gray,edge,CV_BLUR,3,3,0);

cvNot(gray,edge);

//对灰度图像进行边缘检测

cvCanny(gray,edge,(float)edge_thresh,(float)edge_thresh*3,3);

cvZero(cedge);

//copyedgepoints

cvCopy(image,cedge,edge);

//显示图像

cvShowImage(wndname,cedge);

char*filename=argc==2?

argv[1]:

(char*)"

fruits.jpg"

if((image=cvLoadImage(filename,1))==0)

//Createtheoutputimage

cedge=cvCreateImage(cvSize(image->

width,image->

height),IPL_DEPTH_8U,3);

//将彩色图像转换为灰度图像

gray=cvCreateImage(cvSize(image->

height),IPL_DEPTH_8U,1);

edge=cvCreateImage(cvSize(image->

cvCvtColor(image,gray,CV_BGR2GRAY);

//Createawindow

cvNamedWindow(wndname,1);

//createatoolbar

cvCreateTrackbar(tbarname,wndname,&

edge_thresh,100,on_trackbar);

//Showtheimage

on_trackbar(0);

//Waitforakeystroke;

thesamefunctionarrangeseventsprocessing

cvWaitKey(0);

cvReleaseImage(&

image);

gray);

edge);

cvDestroyWindow(wndname);

实验结果:

视频边缘提取结果如图:

Canny获取边缘如图:

小结

通过本次试验,我学会了边缘提取原理。

通过这个原理实践了对视频和图像的边缘提取。

对于代码还是没有完全看懂。

但边缘提取的原理已经明白了。

还需要根据老师的讲解理解一下代码。

指导教师评语及成绩

评语:

成绩:

指导教师签名:

批阅日期:

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

当前位置:首页 > 高等教育 > 军事

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

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