《OpenCV学习笔记》---第一篇 第一个程序
前言
自学OpenCV,写写笔记,路过的多多指点。
1.OpenCV的安装
OpenCV的安装网上有很多资料,这里就不多提了。我用的是OpenCV2.4.11, 开发工具是VS2010。在编写第一个OpenCV程序的时候遇到的第一个问题就是怎么配置工程。
2.配置工程
我说一下在VS2010下,OpenCV工程的配置。
Add in the system Path:
C:\opencv\build\x86\vc10\bin;
Project->Project Property->Configuration Properties->VC++Directories ->Include Directories:
C:\opencv\build\include\opencv
C:\opencv\build\include\opencv2
C:\opencv\build\include
Project->Project Property->Configuration Properties->VC++Directories ->Library Directories:
C:\opencv\build\x86\vc10\lib
Project->Project Property->Configuration Properties->Linker->Input:
opencv_calib3d2411.lib
opencv_contrib2411.lib
opencv_core2411.lib
opencv_features2d2411.lib
opencv_flann2411.lib
opencv_gpu2411.lib
opencv_highgui2411.lib
opencv_imgproc2411.lib
opencv_legacy2411.lib
opencv_ml2411.lib
opencv_nonfree2411.lib
opencv_objdetect2411.lib
opencv_ocl2411.lib
opencv_photo2411.lib
opencv_stitching2411.lib
opencv_superres2411.lib
opencv_ts2411.lib
opencv_video2411.lib
opencv_videostab2411.lib
opencv_calib3d2411d.lib
opencv_contrib2411d.lib
opencv_core2411d.lib
opencv_features2d2411d.lib
opencv_flann2411d.lib
opencv_gpu2411d.lib
opencv_highgui2411d.lib
opencv_imgproc2411d.lib
opencv_legacy2411d.lib
opencv_ml2411d.lib
opencv_nonfree2411d.lib
opencv_objdetect2411d.lib
opencv_ocl2411d.lib
opencv_photo2411d.lib
opencv_stitching2411d.lib
opencv_superres2411d.lib
opencv_ts2411d.lib
opencv_video2411d.lib
opencv_videostab2411d.lib
这样工程就配置好了,可以编写第一个程序了。
3.第一个OpenCV程序。
#include <opencv2/opencv.hpp>
#include <opencv2/legacy/compat.hpp>
using namespace std;
#include <cv.h>
#include <highgui.h>
int main()
{
const char *pstrImageName = "图.bmp";
const char *pstrWindowsSrcTitle = "第一个OpenCV程序";
//从文件中读取图像
IplImage *pSrcImage = cvLoadImage(pstrImageName, CV_LOAD_IMAGE_UNCHANGED);
//创建窗口
cvNamedWindow(pstrWindowsSrcTitle, CV_WINDOW_NORMAL);
//在指定窗口中显示图像
cvShowImage(pstrWindowsSrcTitle, pSrcImage);
//等待按键事件
cvWaitKey();
cvDestroyWindow(pstrWindowsSrcTitle);
cvReleaseImage(&pSrcImage);
return 0;
}
对主要函数做讲解:
1.cvLoadImage
函数功能:打开图片
函数原型:IplImage* cvLoadImage( const char* filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR))
参数说明:
第一个参数是图片路径,该函数可以读取绝大多数格式类型的图片,包括BMP,DIB,JPEG,JPE,PNG,PBM,PGM,PPM,SR,RAS和TIFF。
第二个参数是指定加载图片的颜色类型,可选参数有:
CV_LOAD_IMAGE_UNCHANGED , 原样输出
CV_LOAD_IMAGE_GRAYSCALE , 转成单通道图输出
CV_LOAD_IMAGE_COLOR, 转成3通道图输出
CV_LOAD_IMAGE_ANYDEPTH, 转成8bit单通道图输出
CV_LOAD_IMAGE_ANYCOLOR , 转成8bit 3通道图输出
2.cvNamedWindow
函数功能:创建窗口
函数原型:int cvNamedWindow( const char* name, int flags CV_DEFAULT(CV_WINDOW_AUTOSIZE) )
参数说明:
第一个参数:窗口名称,也是窗口标识,类似于指针。
第二个参数:窗口属性,可选参数有:
CV_WINDOW_NORMAL ,可手动调节窗口大小
CV_WINDOW_AUTOSIZE ,不可手动调节窗口大小,窗口大小有内容大小决定
CV_WINDOW_OPENGL ,窗口支持OpenGL
3.cvShowImage
函数功能:在指定窗口中显示指定图像
函数原型:void cvShowImage( const char* name, const CvArr* image )
参数说明:
第一个参数:窗口名称
第二个参数:需显示的图片
4.cvWaitKey
函数功能:等待按键事件
函数原型:int cvWaitKey(int delay CV_DEFAULT(0))
参数说明:
第一个参数:延迟毫米数,为0时无限等待
返回值:若超时没有,则返回-1,否则返回被按键的值
5.cvDestroyWindow
函数说明:关闭窗口
函数原型:void cvDestroyWindow( const char* name )
参数说明:
第一个参数:窗口名称
这里提一下函数:void cvDestroyAllWindows(void)
,可以一次性关闭所有窗口
6.cvReleaseImage
函数说明:释放图像资源
函数原型:void cvReleaseImage( IplImage** image )
参数说明:
第一个参数:图片对象指针
编译,程序运行结果如下: