边缘提取Word文件下载.docx
- 文档编号:17981442
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:8
- 大小:489.09KB
边缘提取Word文件下载.docx
《边缘提取Word文件下载.docx》由会员分享,可在线阅读,更多相关《边缘提取Word文件下载.docx(8页珍藏版)》请在冰豆网上搜索。
班级:
____指导教师:
____张广渊____
实验概述
【实验目的及要求】
本次试验的目的为图像的边缘提取。
【实验原理】
通过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获取边缘如图:
小结
通过本次试验,我学会了边缘提取原理。
通过这个原理实践了对视频和图像的边缘提取。
对于代码还是没有完全看懂。
但边缘提取的原理已经明白了。
还需要根据老师的讲解理解一下代码。
指导教师评语及成绩
评语:
成绩:
指导教师签名:
批阅日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 边缘 提取
![提示](https://static.bdocx.com/images/bang_tan.gif)