图像显示与加载——opencv(转)

时间:2021-09-17 11:43:50

cvLoadImage()

函数:IplImage* cvLoadImage("图像名称",参数);

函数作用:加载图片;

函数返回值:为IplImage结构体;

参数说明:参数值的宏定义如下;

#define CV_LOAD_IMAGE_UNCHANGED -1 原始图像

#define CV_LOAD_IMAGE_GRAYSCALE 0 灰度图像

#define CV_LOAD_IMAGE_COLOR 1 彩色

#define CV_LOAD_IMAGE_ANYDEPTH 2 任何彩度

#define CV_LOAD_IMAGE_ANYCOLOR 4 任何彩色

函数说明:原始图像如果是灰度图像的话,读取后的图像不可能变为彩色图像,但彩色图像可以任意变为灰度图像,参数部分可以用宏定义名称或者数字来替代.

cvNamedWindow()

函数格式:cvNamedWindow("窗口名称",参数);

函数作用:定义显示图像的界面窗口;

参数:它的参数只有一个

#define CV_WINDOW_AUTOSIZE 1 自动调整窗口大小与图像的大小一致

说明:CV_WINDOW_AUTOSIZE可以让图像显示为原始图像的大小,但如果图片太大很容易造成麻烦,就如RainMan,大小为1200*1600,图像会占满整个屏幕。如果想调整图像大小,就要用到cvResizeWindow()函数,此时cvNamedWindow()的参数不能设成1,而应为0或其他非1的数字;

cvMoveWindow()

格式:cvMoveWindow("窗口名称",屏幕X轴数据, 屏幕Y轴数据);

函数功能:将GUI显示窗口到屏幕指定的位置上;

cvResizeWindow()

格式:cvResizeWindow("窗口名称",缩放后的宽度,缩放后的高度);

功能:将窗口进行缩放变换,变换为参数中的宽度与高度的数值;但cvNamedWindow()的参数必须设定为非1此函数才起作用;

cvGetWindowHandle()

格式:cvGetWindowHandle("窗口名称");

功能:当创建一个新的显示窗口时,系统会随机分配一个窗口指针;但每次重新打开时,这个指针都不一样,因此可以把它看作纯数字;通常都是用(void *)类型来设定;此函数用来通过窗口名称返回窗口的指针。

说明:下面的例子很好的说明了此函数的功能

void * WindowHandle1; //申请显示窗口的指针

WindowHandle1=cvGetWindowHandle("Show Image"); //得到显示窗口地址

printf("The Window Handle is : %d\n",WindowHandle1);

printf("The Window Name is : %s\n",cvGetWindowName(WindowHandle1));

//cvGetWindowName(WindowHandle1) //得到显示窗口的名称

cvGetWindowName()

格式:cvGetWindowName(窗口的ID指针);

功能:通过窗口的ID指针来,返回窗口的名称;

cvShowImage()

格式:cvShowImage("窗口名称",IplImage结构地址或CvArr结构地址)

功能:显示一幅图像

cvWaitKey()

格式:cvWaitKey(int num);

功能:此函数为键盘事件;如果用cvShowImage()来显示图像的话,就必须用到cvWaitKey(),而不能用"stdlib.h"中的的system("pause")取代。cvWaitKey()是专门在OpenCV的GUI界面下等待键盘命令,而不是在黑白环境下的命令提示符

说明:键盘事件分为两种:阻断式(block)和非阻断式(unblock)。阻断式的就是cvWaitKey(0):它会一直等待到键盘事件发生为止;非阻断式的为参数为大于0的数字如:cvWaitKey(10),它将会等到10毫秒后自动输出-1,代表10毫秒內沒接收到键盘上的任何事件。

cvDestroyWindow()

格式:cvDestroyWindow("窗口名称')

功能:清除窗口

cvReleaseImage()

格式:cvReleaseImage(IplImage结构地址)

功能:释放申请的IplImage结构图像的内存

源程序:

//头文件

#include <stdio.h>
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>
#include <cvaux.h>

void main()
{
//char *FileName[10]="lena.jpg";
void * WindowHandle1;
char *FileName="lena.jpg";
char *WndName = "Show Image";

IplImage *Image1 = cvLoadImage(FileName,1);

cvNamedWindow(WndName,0);
cvResizeWindow(WndName,400,400);

WindowHandle1=cvGetWindowHandle("Show Image");
printf("The Window Handle is : %d\n",WindowHandle1);
printf("The Window Name is : %s\n",cvGetWindowName(WindowHandle1));

cvShowImage(WndName,Image1);
cvWaitKey(0);

cvDestroyWindow(WndName);
cvReleaseImage(&Image1);
}

原文出处:http://hi.baidu.com/õѩ����/blog/item/26652fc6a956d3d5d000607b.html