OpenCV学习笔记01--图像和视频的显示

例一:显示图像


学到的函数:

1.cvNamedWindow("Example", 0)

  创建一个窗口显示图像,标题为Example.第二个参数为0图片填充窗口,CV_WINDOW_AUTOSIZE为这个窗口适应图片

2.cvLoadImage("D:\\02.jpg")

  将一副图像加载进内存,返回图像的指针

3.cvShowImage("Example", img)

  在Example窗口中显示img图片

4.cvWaitKey(0)   

  参数为等待按键按下的时间,即程序静止的时间,单位为ms。若为0一直等待直到按键按下


Opencv显示图像有如下几个过程,首先,建立一个窗口用来显示图像,第二步,将图像加载进内存,第三步显示图像。

加载完毕后为了让其保持显示状态,可以用cvWaitKey(0)使其在按键按下后再执行之后的操作。当其参数为非0x时,表示在xms后执行之后的操作。

而程序执行完毕后为了安全性需要释放内存和窗口。虽然在关闭窗口时系统会自动释放这些资源,可是养成习惯显示释放资源对之后的开发是有好处的。


#include "stdafx.h"

#include "highgui.h"

int _tmain(int argc, char** argv)
{
IplImage* img = cvLoadImage("D:\\02.jpg");
cvNamedWindow("Example", 0);//创建一个窗口显示图像,标题为Example.第二个参数为0图片填充窗口,CV_WINDOW_AUTOSIZE为这个窗口适应图片
cvShowImage("Example", img);   //在Example窗口中显示img图片
cvWaitKey(0);               //等待按键按下
cvReleaseImage(&img);     //释放内存
cvDestroyWindow("Example");  //释放窗口
while (1);
}


例二:显示视频

新加入的函数:

1.CvCapture* capture = cvCreateFileCapture("D:\\1.wmv"); 

  读入视频文件,返回指向CvCapture的指针

2.frame = cvQueryFrame(capture);

  将下一帧视频文件载入内存,返回下一帧的指针

3.cvCreateCameraCapture(0);

  读取摄像机图像,返回指向CvCapture的指针,参数为-1会让选择摄像机


显示视频和显示图像相比,只是把视频文件一帧一帧地以图像的方式显示。而实现这一功能的是cvQueryFrame()函数,这个函数将视频文件一帧一帧的分开,返回下一帧的图像对应的指针。

显示视频和显示图像几乎没有区别,首先,建立一个窗口用来显示图像,第二步,将视频加载进内存,第三步,得到视频中的当前帧的图像,第四步,显示图像。

当然,其内部还是有一些微小的区别:

一、读入图片是用cvLoadImage,返回的指针是IplImage*;而读入视频是用cvCreatFileCapture,而其返回的指针是CvCapture*

二、释放内存时显示图像需要释放图片占用的内存,而显示视频图像是从视频中获取的,所以需要释放的是视频的内存。

int _tmain(int argc, _TCHAR* argv[])
{
cvNamedWindow("Opencv", 0);
//	IplImage* img = cvLoadImage("D:\\2.JPG");
//	CvCapture* capture = cvCreateFileCapture("D:\\1.wmv"); //读入视频文件,返回指向CvCapture的指针
CvCapture* capture = cvCreateCameraCapture(0);//获取摄像头采集的视频,返回指向CvCapture的指针
IplImage* frame;
while (1)
{
frame = cvQueryFrame(capture);//将下一帧视频文件载入内存,返回下一帧的指针
if (!frame) break;
    cvShowImage("Opencv", frame);
    char c = cvWaitKey(33);  //每33ms显示一帧图像
if (c == 27) break; //27对应的是ESC键,即当ESC键按下时退出
} 
cvReleaseCapture(&capture);
cvDestroyWindow("Opencv");	    
return 0;
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值