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环境下,这个函数不起作用。
- OpenCV入门(五)--OpenCV中的HighGUI(1)
- OpenCV入门(六)--OpenCV中的highGUI(2)
- 细说opencv中的HIGHGUI结构(一)
- 细说opencv中的HIGHGUI结构(二)
- opencv中highgui库中的函数集合
- OpenCV 之 HighGUI 参考手册
- highgui基础 OpenCV trackbar
- opencv 3.0 绘图 highgui
- OpenCV学习HighGUI
- opencv:简单的HighGui
- 导入opencv.highgui.Highgui会报错
- [Learning OpenCV入门2]CMake生成源代码以及HighGUI部分内容
- OpenCV从入门到放弃(四):HighGui组件细讲
- opencv之highgui中createTrackbar
- 【学习OpenCV】——highgui
- 【OpenCV归纳】4 关于HighGUI
- opencv学习笔记2:HighGUI
- Opencv HighGUI函数_窗口
- POJ 1050 To the Max
- SVM资源收藏
- 关于android.view.InflateException: Binary XML file line #2: Error inflating class <unknow
- Balanced Binary Tree,Binary Tree Level Order Traversal I&II,Maximum Depth of Binary Tree,Plus One
- Java在windows下编码问题
- OpenCV入门(五)--OpenCV中的HighGUI(1)
- 字符串按给定的方式压缩
- POJ 1068 Parencodings
- cocos2d-x-3.2 创捷新工程范例
- 自我总结
- FFmpeg在windows下的编译,搭建mingw+msys环境,含mingw+msys下载 [转载,有改动]
- 莫名其妙的出现这个错,看了logcat 说是什么二进制xml错误啥的。。。 不过后来发现,这个一般都是给eclipse项目中添加图片等资源时出现的一些bug,看似添加到项目中,其实没有,或
- 黑马程序员---内存管理之引用计数器
- memcached操作使用