1. int cvNamedWindow(const char* name,int flags=CV_WINDOW_AUTOSIZE) 创建窗口函数
name:表窗口的名字,此名称显示在窗口的顶部
flags:用来表示是否需要使窗口大小自动适应度入的图像大小,其有效值分别是0和默认值CV_WINDOW_AUTOSIZE.如果是CV_WINDOW_AUTOSIZE,表示窗口大小会随着图像的载入而根据图像的大小调整,用户没法手动调整窗口大小。如果为0,用户可随意调整窗口大小。
一旦窗口创建成功,就能使用窗口的名称来表示窗口。
cvDestroyWindow(),接收一个字符串参数(即窗口创建时所指定的名称),用于释放窗口。
cvResizeWindow(const char* name,int weight,int height)宽高以像素为单位,指定窗口可以显示的部分。此函数用于调整窗口大小。
2. IplImage* cvLoadImage(const char* filename,int iscolor = CV_LOAD_IMAGE_COLOR) 加载图像函数
cvLoadImage()加载图像时,通过分析图像文件的前几个字节来确定图像编码格式。
iscolor:默认(即CV_LOAD_IMAGE_COLOR),表示不管原始图像的通道数是多少,都将转换成3个通道读入,每个通道8位。
若是CV_LOAD_IMAGE_GRAYSCALE,表示将图像强制转换成单通道,其值为0。
若是CV_LOAD_IMAGE_ANYCOLOR,表示保持原始图像通道书的方式读入,其值为4。
若是CV_LOAD_IMAGE_ANYDEPTH,表示读入非8位的图像,其值为2。
若是CV_LOAD_IMAGE_UNCHANGED,表示读入数据与原始图像通道数及位数保持一致,其值为-1。
例:若要读入16位彩色图像,应将iscolor设置为CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_COLOR。
此函数如果读入失败,不会产生一个运行时错误,而是返回一个空指针。
3. int cvSaveImage(const char* filename,const CvArr* image) 保存图像函数
filename:文件名,后缀部分表示图像存储的编码格式。
image :指向要存储图像数据的指针。可以用ImlImage*参数传入。
只能存储8位通道或3通道的图像,而png,tiff,或jpg2000允许16位甚至浮点个事类型图像,同事也支持4通道(BGRA)的图像。
当存储成功返回1,存储失败返回0.
4. void cvShowImage(const char* name,const CvArr*image) 显示图像
name:指定用来显示图像的窗口。
image;指向需要显示的图像。
5. void cvReleaseImage(IplImage** image) 图像销毁
image为已定义的IplImage* 的指针。
释放为图像文件分配的内存,最后image指针将被设置为NULL。
6. int waitKey(int delay=0)
功能是不断刷新图像,频率时间为delay,单位为ms。返回值为当前键盘按键值(ASCII 码)。
delay>0, 表示在一个给定时间内等待用户按键触发,如果在给定时间内用户按下一个键,函数返回用户按下的键,否则,返回0。
delay<=0,表示如果没有键盘触发,则一直等待,否则返回值为键盘按下的码字。
一般运用:
经常程序里面出现if( cvWaitKey(10) >= 0 ) 。首先cvWaitKey(10)代表在当前状态下等待十毫秒,整句的意思就是如果在十毫秒内按下任意键就进入if子句中,若无按键,返回-1。其作用是控制帧率(即一秒读取多少帧)。举个例子:如果出现在摄像头调用中,10就代表摄像头画面刷新间隔,按下任意键则可以进入if子句(一般是用break跳出循环,结束调用)。
#include"opencv\highgui.h"
int main(int argc,int argv[]){
cvNamedWindow("showImage",0);
IplImage* img = cvLoadImage("F:\\lena.jpg",CV_LOAD_IMAGE_ANYCOLOR|CV_LOAD_IMAGE_ANYDEPTH); //注意图像文件路径,两个反斜杠,前一个表转义,后一个为文件路径中本身含有的
cvShowImage("showImage",img);
cvWaitKey(0);//停在显示图像的界面,一直等待用户按键按下
cvReleaseImage(&img);
cvDestroyWindow("showImage");
return 0;
}