ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:1.98MB ,
资源ID:15732637      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15732637.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(opencv初步学习总结Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

opencv初步学习总结Word文档格式.docx

1、刚开始学习是对OPENCV不怎么懂,不知道其怎么使用。最后发现OPENCV就是一个用做信号,图像等方面检测处理的C语言库,只要把库添加到VISUAL C中便可以。然后我们用VISUAL 做我们所需要的分析处理。#include”highgui.h”Void main() IplImage *img=cvLoadImage(“D:02.jpg”); cvNamedWindow(“example1”,CV_WINDOW_AUTOSIZE); cvShowImage(“example1”,img); cvWaitkey(0); cvReleaseImage(&img); cvDestroyWindo

2、w(“example1”);其实这个例子很简单,就是调用显示一张图片了。这句是包含头文件了,highgui.h中包含图像处理,显示等方面的函数。IplImage *img=cvLoadImage(“D:该功能是将显示的图像加载至内存,cvLoadImage();执行后返回的是一个指针,此指针指向一块描述该图片属性信息的结构体。IplImage为一个结构体,专门用在图像的处理。我们也可以看下IplImage的数据结构 其实他是这样定义的:Typedef struct_IplImageInt size;Int id;Int nChannels;Int alphaChannel;Int depth;

3、.IplImage;从这里可以看见IplImage是结构体,并且怎么定义的。cvNamedWindow(“example1”,CV_WINDOW_AUTOSIZE);作用在屏幕上创建一个窗口,将被显示的图片包含在该窗口中,函数的第一个参数指定了该创建窗口的标题,第二个参数定义了窗口的属性,CV_WINDOW_AUTOSIZE表示窗口的大小随着图像的大小自动的缩放,如果此处该为0,则窗口的大小固定,不会随图片的大小缩放。在创建好的窗口中显示图像,第一个参数设定在你那个已经存在的窗口中显示图片,第二个参数为一个指针。是程序暂停,等待用户触发一个按键操作,如果其中的参数值设定为正数时,程序暂停该正数

4、个毫秒单位。这里也可以尝试,如程序写成:Char c=cvWaitKey(0);If(c=27)break;意思是说当有ESC键按下时推出,(27为ESC的ASCII码)图片加载完成后,我们释放该图片所分配的内存。释放为创建窗口分配的内存。(2)利用OPENCV 播放AVI格式视屏:使用OPEN CV播放视屏和使用它显示一张图片一样,都是比较容易的。以下这段程序实现播放一段视屏(注意是AVI格式的):#include highgui.hvoid main( ) cvNamedWindow(example2,0); CvCapture *capture=cvCreateFileCapture(d

5、:test4.avi); IplImage *frame; while(1) frame=cvQueryFrame(capture); if(!frame)break; cvShowImage(,frame); char c=cvWaitKey(33); if(c=27)break; cvReleaseCapture(&capture); cvDestroyWindow(现在对程序做以解释:cvNamedWindow(这两个在(1)中已经做过解释。CvCapture *capture=cvCreateFileCapture(对比加载图片的函数IplImage *img=cvLoadImage(

6、“D:这段代码的意思是加载视屏,执行后返回的是一个指针,此指针指向一块描述该视屏属性信息的结构体。其中CvCaputer和IplImage相类似,都是一个结构体,不同的是一个放的是视屏的信息,一个放的是图片的信息。IplImage *frame;这句定义一个IplImage结构体指针,因为视屏是一帧一帧的(一张一张的图片连续组成的)组成的,故播放视屏其实就是很快速的把这些一帧一帧的图片播放完,所以在循环体中使用IplImage结构体指针frame指向帧。while(1)进入循环体后,便开始播放AVi视屏了,cvQueryFrame();的作用其实和加载图片时用的cvLoadImage();函数

7、的功能是一样的,不同的是,每次使用cvLoadImage();都为图片分配内存空间,而cvQueryFrame();使用已经在CvCapture中分配好的内存。这样就没有必要显示完一帧后就用cvReleaseImage();释放内存空间,在此程序最后用cvReleaseCapture(&便可以释放掉内存。char c=cvWaitKey(33);意思是显示一个帧后会延迟33毫秒然后在显示下一个帧,如果中间有ESC按键触发(ESC的ASCII码为27),程序直接退出。cvReleaseCapture(&当然是释放内存空间了,养成释放内存空间总是好习惯的,虽然现在计算机内存已经很大了,但是对一个较

8、大的程序项目而言,如果没有很好的利用资源,可以想象造成什么不良后果。以下为播放视屏的截图。(3)OPENCV为播放视屏添加滚动条在(2)中实现了播放一段视屏,但是一般看视屏时都要添加滚动条,没有滚动条不方便。/包含了图像和视频的输入/输出/用来标定滚动条当前的位置,为全局变量。为了区分局部变量,加g以表示区别。int g_slider_position =0;/将打开的视频文件作为一个全局变量使用CvCapture * g_Capture=NULL;/(回调函数:很有意义)当拖动滚动条后,会回调这个函数,同时会将当前滚动条的位置以32 位形式传递过来void CallBackTrackBarS

9、lide(int pos) /这里便是重新设置视频文件当前播放的帧 cvSetCaptureProperty(g_Capture,CV_CAP_PROP_POS_FRAMES,pos);/使用了命令行下运行的形式,其中要在命令行下传递参数,在DOS下执行命令。int main(int argc,char *argv),CV_WINDOW_AUTOSIZE); /根据参数打开指定的视频文件 g_Capture=cvCreateFileCapture(“D:test04.avi”); /获得总的帧数 Int Frames= (int)cvGetCaptureProperty(g_Capture,C

10、V_CAP_PROP_FRAME_COUNT); if(Frames!=0) /创建滚动条,在这里指定了滚动条拖动后的回调函数 cvCreateTrackbar(TrackBar,&g_slider_position, Frames,CallBackTrackBarSlide); IplImage * frame; /循环的顺序的遍历所有的帧 while(1) /获取当前帧的下一个帧,并将其加载到内存中 frame=cvQueryFrame(g_Capture); if(frame=0) break; cvShowImage( char ckeycode=cvWaitKey(33); /ASC

11、II码中27为ESC。 if(cKeyCode=27)g_Capture); return( 0);从本质上说,这种方法是通过添加一个全局变量来表示滚动条位置并且添加一个回调函数更新变量以及重新设置视频读入位置。我们通过一个调用来创建滚动条和确定回调函数 。下面让我们看看细节。intg_slider_position=0; CvCapture*g_captureNULL;首先为滚动条位置定义一个全局变量。由于回调函数需要使用CvCapture对象,因此我们将它定义为全局变量。为了使我们的程序可读性更强,我们在所有全局变量名称前面加上g_。voidonTrackbarSlide(intpos)

12、cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES, pos);现在我们定义一个回调函数,使其在滚动条被拖动时调用。滚动条的位置会被作为一个32位整数以参数形式传入。后面我们会常常看到函数cvSetCaptureProperty()被调用,同时与之配套的函数cvGetCaptureProperty()也经常会被调用。这些函数允许我们设置(或查询)CvCapture对象的各种属性。在本程序中我们设置参数CV_CAP_PROP_POS_ FRAMES(这个参数表示我们以帧数来设置读入位置,如果我们想通过视频长度比例来设置读入位置,我们可以通过用AVI_RATIO代替FRAMES来实现)。最后,我

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

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