您的位置:首页 > 移动开发

VS2008+Opencv2.3.1 创建Win32 Console Application显示一张图片

2013-03-02 20:39 211 查看
基于Opencv,我们可以读取各种图像文件,视频文件,还可以读取摄像头。这些功能是Opencv开发包中HighGUI工具集的一部分。
接下来先创建一个Win32
Console Application(Win32控制台应用程序)项目test,并按自己需求添加需要的依赖项,完成后即可在test.cpp文件中输入如下代码。

#include"stdafx.h"
#include"highgui.h"

int main(int argc, char* argv[])
{
//声明IplImage指针

IplImage* src = cvLoadImage("D:\\123\\lena.jpg",-1);//加载一个图像

// 创建一个标题为:show_image 的窗口
cvNamedWindow("show_image",0);

// 通过cvShowImage()函数来指定在指定的窗口中显示指定的图片
cvShowImage("show_image",src);
//show_image是通过cvNamedWindow设定

cvWaitKey(0);
//  括号内的参数<=0,等待按键退出,>0,延时xx(ms)后自动退出
/*****释放内存********/
//释放掉加载到内存中的图片所占的内存资源
cvReleaseImage(&src);

//销毁窗口
cvDestroyWindow("show_image");

return 0;
}


程序运行后显示如下:



代码解析:

1、int _tmain(int argc, _TCHAR* argv[])

这里只不过是考虑了Unicode字符集而已。还是可以写成 int main(int argc, char* argv[])

2、IplImage* src = cvLoadImage("D:\\123\\lena.jpg",-1);//此行代码是将图像加载到内存

cvLoadImage函数说明:

cvLoadImage(char* filename , int flags = CV_LOAD_IMAGE_COLOR)

filename:图像文件所在路径。

flags:(从转到cvLoadImage这个函数的定义可以看见)

/*图像颜色不变*/

#define CV_LOAD_IMAGE_UNCHANGED = - 1

/*灰度图像(单通道)*/

#define CV_LOAD_IMAGE_GRAYSCALE = 0

/*彩色图像(3通道图像)*/

#define CV_LOAD_IMAGE_COLOR =1

/*颜色的深度,即一个像素用几位表示*/

#define CV_LOAD_IMAGE_ANYDEPTH = 2

/*保持原样*/

#define CV_LOAD_IMAGE_ANYCOLOR =4

如果想要载入最真实的图像,选择 CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR
如果输入有冲突的标志,将采用较小的数字值。比如 CV_LOAD_IMAGE_GRAYSCALE | CV_LOAD_IMAGE_COLOR 将载入单通道图像。
函数通过文件名确定被加载文件的格式并且该函数在内部自动分配图像数据结构所需内存空间。cvLoadImage()函数可以打开大部分常用图像格式,如BMP,JPEG,JPG,PNG等。该函数执行完后会返回一个指针,该指针指向描述图像文件数据结构IplImage分配的内存。D:\\123\\lena.jpg为指定图像所在地址。也可直接为lena.jpg,但是需要将这张图片放在对应的工程文件夹下。

3、cvNamedWindow("show_image",1);

cvNameWindow函数说明:

int cvNameWindow(char* name , int flags)

name:窗口的名称(唯一的)。如果已经有同名的窗口,则该函数什么也不干。

flags:CV_WINDOW_AUTOSIZE,会根据图像大小自动调整窗口大小。如果是0,则窗口大小不变。

cvNamedWindow()函数将在屏幕上创建一个窗口用于显示图像。函数中第一个参数为窗口命名为"show_image",第二个参数为定义窗口属性,默认值为0,表示窗口大小不会因图像的大小而改变,图像将根据窗口大小进行变化充满窗口。为1或CV_WINDOW_AUTOSIZE时,窗口将根据图像的实际大小自动变化适应图像。

4、cvShowImage("show_image",src);

功能:在指定窗口显示图像;
cvShowImage( char* name, IplImage* image );
name:窗口名称。这个名称是由cvNameWindow函数设定的。
image:被显示的图像。

cvShowImage()函数通过第一个参数确定在已创建的哪个窗口中显示图像,且该函数被调用时窗口将被重绘并将图像显示到窗口中。

5、cvWaitKey(0);

int cvWaitKey(int key);

函数功能为使程序暂停,等待触发按键。函数中参数为大于0时,程序将暂停该key毫秒后继续执行程序,没有按下按键也会如此。设置为0或者小于0的数,那么该函数功能是在等待用户触发按键。

6、cvReleaseImage(&src);

cvDestroyWindow("show_image");
销毁窗口并释放内存,传递一个IplImage*的指针参数给cvReleaseImage()用于释放内存,执行完毕后Image的指针被设置为NULL。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: