OpenCV学习笔记 第一篇 显示图像
关于opencv的配置,大家自己找教程配置,本笔记侧重于对opencv基础入门的学习,本节学习opencv的一些简单语句,如何利用opencv来加载图像,显示图像,来学习一些简单基础的opencv的语句,推荐一本opencv的经典书《学习OpenCV》中文版
- -
一,主要函数介绍
1.1 cvLoadImage
函数功能:载入图像
函数cvLoadImage从指定文件读入图像,返回读入图像的指针。
函数原型:
IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );
函数详解:
filename :要被读入的文件的文件名(包括后缀);
支持多种图像,如(JPEG文件 - JPEG, JPG, JPE、便携式网络图片- PNG、Windows位图文件- BMP, DIB等多种格式)
flags :指定读入图像的颜色和深度:
指定的颜色可以将输入的图片转为3通道(CV_LOAD_IMAGE_COLOR), 单通道 (CV_LOAD_IMAGE_GRAYSCALE), 或者保持不变(CV_LOAD_IMAGE_ANYCOLOR)。
也可以写成如下:
cvLoadImage( filename, -1 ); 默认读取图像的原通道数
cvLoadImage( filename, 0 ); 强制转化读取图像为灰度图
cvLoadImage( filename, 1 ); 读取彩色图
1.2cvNamedWindow
函数功能:创建窗口
函数原型:cvNamedWindow( const char* name, int flags=CV_WINDOW_AUTOSIZE );
函数详解:name 窗口的名字,它被用来区分不同的窗口,并被显示为窗口标题。
flags 窗口属性标志。可以选择CV_WINDOW_AUTOSIZE(1)和0两种值。CV_WINDOW_AUTOSIZE这个标志被设置后, 如果用户不能手动改变窗口大小,窗口大小会自动调整以适合被显示图像(参考cvShowImage)。0表示以固定的窗口尺寸显示图像。
函数cvNamedWindow创建一个可以放置图像和trackbar的窗口。被创建的窗口可以通过它们的名字被引用。 如果已经存在这个名字的窗口,这个函数将不做任何事情,以后为大家介绍trackbar的学习
1.3cvShowImage
函数功能:显示图像
函数原型:void cvShowImage( const char* name, const CvArr* image );
函数详解:name 窗口的名字。
image 被显示的图像。
函数cvShowImage 在指定窗口中显示图像。如果窗口创建的时候被设定标志CV_WINDOW_AUTOSIZE,那么图像将以原始尺寸显示;否则,图像将被伸缩以适合窗口大小
1.4cvWaitKey
函数功能:不断刷新图像,返回值为当前键盘按键值,默认值为零
函数原型:C++: int waitKey(int delay=0)
函数详解,等待按键,使图像一直显示
1.5cvDestroyWindow
函数功能:销毁一个窗口
函数原型:void cvDestroyWindow( const char* name );
函数详解:name 要被销毁的窗口的名字。
函数cvDestroyWindow销毁指定名字的窗口。
1.6cvReleaseImage
函数功能:销毁已定义的IplImage指针变量,释放占用内存空间
函数原型:void cvReleaseImage( IplImage** image );
二,示例程序演示
#include <opencv2/opencv.hpp>
int main()
{
const char *pstrImageName = "123456.jpg";//注意,需要将图片放在所建工程的路径下,名字和格式需一致
const char *pstrWindowsTitle = "原图";
IplImage *pImage = cvLoadImage(pstrImageName, 1); //从文件中读取图像
cvNamedWindow(pstrWindowsTitle,1 ); //创建窗口
cvShowImage(pstrWindowsTitle, pImage); //在指定窗口中显示图像
cvWaitKey(); //等待按键事件
cvDestroyWindow(pstrWindowsTitle); //毁坏窗口
cvReleaseImage(&pImage); //破坏图像
return 0;
}
程序运行结果如下
这次介绍的一些基本语句很简单,也是本人学习opencv的笔记一些整理,希望能够为我等菜鸟简单入门,随着学习的深入,也会逐渐学习,谢谢大家观看,欢迎提意见,谢谢