您的位置:首页 > 运维架构

《OpenCV学习笔记》---第一篇 第一个程序

2016-01-29 11:55 239 查看
《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 )


参数说明:

第一个参数:图片对象指针

编译,程序运行结果如下:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: