简单实例
下面是最简单的OpenCV
示例,功能为加载图像文件并显示出来:
#include <opencv2/opencv.hpp>
using namespace std;
int main() {
const char *pstrImageName = "zzjb.jpg";
const char *pstrWindowsTitle = "OpenCV第一个程序";
/* 从文件中读取图像 */
IplImage *pImage = cvLoadImage ( pstrImageName, CV_LOAD_IMAGE_UNCHANGED );
cvNamedWindow ( pstrWindowsTitle, CV_WINDOW_AUTOSIZE ); /* 创建窗口 */
cvShowImage ( pstrWindowsTitle, pImage ); /* 在指定窗口中显示图像 */
cvWaitKey(); /* 等待按键事件 */
cvDestroyWindow ( pstrWindowsTitle );
cvReleaseImage ( &pImage );
return 0;
}
对该文件进行编译:
g++ opencv_test.cpp -o opencv_test `pkg-config --libs --cflags opencv`
cvNamedWindow
cvNamedWindow
的功能为创建窗口:
int cvNamedWindow ( const char *name, int flags = CV_WINDOW_AUTOSIZE );
参数name
表示窗口的名字,即窗口标题。被创建的窗口可以通过它们的名字被引用。参数flags
表示窗口属性标志,目前唯一支持的标志是CV_WINDOW_AUTOSIZE
。当这个标志被设置后,用户不能手动改变窗口大小,窗口大小会自动调整以适合被显示图像。注意,如果已经存在这个名字的窗口,这个函数将不做任何事情。
cvShowImage
cvShowImage
的功能为在指定窗口中显示图像:
void cvShowImage ( const char *name, const CvArr *image );
参数name
为窗口的名字,image
为被显示的图像。
cvWaitKey
cvWaitKey
的功能为等待按键事件:
int cvWaitKey ( int delay = 0 );
参数delay
为延迟的毫秒数,当delay
小于或等于0
时表示无限等待。如果超过指定时间,则返回-1
,否则返回被按键的值。
cvLoadImage
函数原型如下:
IplImage *cvLoadImage ( const char *filename, int flags = CV_LOAD_IMAGE_COLOR );
参数filename
是要被读入的文件的文件名,flags
是指定读入图像的颜色和深度。
指定的颜色可以将输入的图片转为3
信道(CV_LOAD_IMAGE_COLOR
)、单信道(CV_LOAD_IMAGE_GRAYSCALE
)或者保持不变(CV_LOAD_IMAGE_UNCHANGED
)。
cvLoadImage
使用方法如下:
cvLoadImage ( filename, -1 ); /* 默认读取图像的原通道数 */
cvLoadImage ( filename, 0 ); /* 强制转化读取图像为灰度图 */
cvLoadImage ( filename, 1 ); /* 读取彩色图 */
cvSaveImage
函数原型如下:
int cvSaveImage ( const char *filename, const CvArr *image );
参数filename
是文件名,image
是要保存的图像。
函数cvSaveImage
保存图像到指定文件,图像格式的的选择依赖于filename
的扩展名。特别提醒,由于TIFF
文件格式比较混乱,此函数读取TIFF
图片可能会失败。