OpenCV入门(五)--OpenCV中的HighGUI(1)

来源:互联网 发布:mysql自定义函数split 编辑:程序博客网 时间:2024/06/08 04:39

注释:HighHGUI只是用来建立快速软件原形或是试验用的。它提供了简单易用的图形用户接口,但是功能并不强大,也不是很灵活。

1. 创建窗口

cvNamedWindow

创建窗口

int cvNamedWindow( const char* name, int flags=CV_WINDOW_AUTOSIZE );
name 
窗口的名字,它被用来区分不同的窗口,并被显示为窗口标题。
flags 
窗口属性标志,为1时表示会根据图像自动调整窗口大小。目前唯一支持的标志是CV_WINDOW_AUTOSIZE。当这个标志被设置后,用户不能手动改变窗口大小,窗口大小会自动调整以适合被显示图像(参考cvShowImage)。

函数cvNamedWindow创建一个可以放置图像和trackbar的窗口。被创建的窗口可以通过它们的名字被引用。

如果已经存在这个名字的窗口,这个函数将不做任何事情。


当不需要这个窗口是,必须销毁窗口,销毁窗口的函数是

cvDestroyWindow

销毁一个窗口

void cvDestroyWindow( const char* name );
name 
要被销毁的窗口的名字。

函数cvDestroyWindow销毁指定名字的窗口。


cvResizeWindow

设定窗口大小

void cvResizeWindow( const char* name, int width, int height );
name 
将被设置窗口的名字。
width 
新的窗口宽度。
height 
新的窗口高度。

函数cvResizeWindow改变窗口的大小。



2.GUI简单的图形界面:载入图像

cvLoadImage

从文件中读取图像

需要include "highgui.h"

/* 8 bit, color or gray - deprecated, use CV_LOAD_IMAGE_ANYCOLOR */#define CV_LOAD_IMAGE_UNCHANGED  -1/* 8 bit, gray */#define CV_LOAD_IMAGE_GRAYSCALE   0/* 8 bit unless combined with CV_LOAD_IMAGE_ANYDEPTH, color */#define CV_LOAD_IMAGE_COLOR       1/* any depth, if specified on its own gray */#define CV_LOAD_IMAGE_ANYDEPTH    2/* by itself equivalent to CV_LOAD_IMAGE_UNCHANGED   but can be modified with CV_LOAD_IMAGE_ANYDEPTH */#define CV_LOAD_IMAGE_ANYCOLOR    4
IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );
filename 
要被读入的文件的文件名。
flags 
指定读入图像的颜色和深度:
  • 指定的颜色可以将输入的图片转为3信道(CV_LOAD_IMAGE_COLOR)也即彩色(>0), 单信道 (CV_LOAD_IMAGE_GRAYSCALE)也即灰色(=0), 或者保持不变(CV_LOAD_IMAGE_ANYCOLOR)(<0)。
  • 深度指定输入的图像是否转为每个颜色信道每象素8位,(OpenCV的早期版本一样),或者同输入的图像一样保持不变。
  • 选中CV_LOAD_IMAGE_ANYDEPTH,则输入图像格式可以为8位无符号,16位无符号,32位有符号或者32位浮点型。
  • 如果输入有冲突的标志,将采用较小的数字值。比如CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYCOLOR 将载入3信道图。CV_LOAD_IMAGE_ANYCOLOR和CV_LOAD_IMAGE_UNCHANGED是等值的。但是,CV_LOAD_IMAGE_ANYCOLOR有着可以和CV_LOAD_IMAGE_ANYDEPTH同时使用的优点,所以CV_LOAD_IMAGE_UNCHANGED不再使用了。
  • 如果想要载入最真实的图像,选择CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR。

函数cvLoadImage从指定文件读入图像,返回读入图像的指针。目前支持如下文件格式:

  • Windows位图文件 - BMP, DIB;
  • JPEG文件 - JPEG, JPG, JPE;
  • 便携式网络图片 - PNG;
  • 便携式图像格式 - PBM,PGM,PPM;
  • Sun rasters - SR,RAS;
  • TIFF文件 - TIFF,TIF;
  • OpenEXR HDR 图片 - EXR;
  • JPEG 2000 图片- jp2。

cvSaveImage

保存图像到文件

需要include "highgui.h"

int cvSaveImage( const char* filename, const CvArr* image );
filename 
文件名,如果对应的文件已经存在,则将被复盖。
image 
要保存的图像。

函数cvSaveImage保存图像到指定文件。图像格式的的选择依赖于filename的扩展名,请参考cvLoadImage。只有8位单通道或者3通道(通道顺序为'BGR' )可以使用这个函数保存。如果格式,深度或者通道不符合要求,请先用cvCvtScale 和cvCvtColor转换;或者使用通用的cvSave保存图像为XML或者YAML格式。


cvShowImage

在指定窗口中显示图像

void cvShowImage( const char* name, const CvArr* image );
name
窗口的名字。
image
被显示的图像。

函数cvShowImage 在指定窗口中显示图像。如果窗口创建的时候被设定标志CV_WINDOW_AUTOSIZE,那么图像将以原始尺寸显示;否则
,图像将被伸缩以适合窗口大小。





实验:载入一幅图像,改变其输出窗口尺寸

#include "highgui.h"#include "cv.h"void showPicture(IplImage* img){cvNamedWindow("show_img",0);//窗口命名为 show_imgcvResizeWindow("show_img",200,200);cvShowImage("show_img",img);//在窗口中显示图像cvWaitKey(0);//暂停程序,等待触发结束cvReleaseImage(&img);//释放img的空间cvDestroyWindow("show_img");//销毁窗口}

结果:


cvWaitKey

等待按键事件

int cvWaitKey( int delay=0 );
delay 
延迟的毫秒数。

函数cvWaitKey无限制的等待按键事件(delay<=0时);或者延迟"delay"毫秒。返回值为被按键的值,如果超过指定时间则返回-1。

注释:这个函数是HighGUI中唯一能够获取和操作事件的函数,所以在一般的事件处理中,它需要周期地被调用,除非HighGUI被用在某些能够处理事件的环境中。

译者注:比如在MFC环境下,这个函数不起作用。


函数解释来自:http://wiki.opencv.org.cn/index.php/HighGUI%E7%AE%80%E5%8D%95%E5%9B%BE%E5%BD%A2%E7%95%8C%E9%9D%A2




0 0
原创粉丝点击