《计算机视觉实验课课件.ppt》由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关《计算机视觉实验课课件.ppt》文档请在天天文库搜索。

1、OpenCV 基础一、OpenCV概述 (1)OpenCV是Intel开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。 (2)OpenCV 拥有包括 300 多个C函数的跨平台的中、高层 API。它不依赖于其它的外部库——尽管也可以使用某些外部库。 (3)OpenCV 对非商业应用和商业应用都是免费的。 (4)OpenCV 为Intel® Integrated Performance Primitives (IPP) 提供了透明接口。二、VC6.0下OpenCV的安装与配置1、OpenCV的安装 下载OpenCV安装程序,将OpenCV安装到C:\Program Files\OpenCV(此目录须与VC6.0的安装目录一致)。 注:在安装时选择"将\OpenCV\bin加入系统变量"(Add\OpenCV\bin to the s。

2、ysterm PATH)。 2、配置Windows环境变量 检查C:\Program Files\OpenCV\bin是否已经被加入到环境变量PATH,如果没有,请加入。加入后需要注销当前Windows用户(或重启)后重新登陆才生效。 右击桌面上的“我的电脑”,选择“属性”选项,在弹出的窗口中 单机“高级”标签,在“环境变量”列表中对Path变量进行编辑,将路径C:\Program Files\OpenCV\bin是否已经被加入到环境变量Path变量的尾部。3、配置Visual C++ 6.0(1)全局设置 菜单Tools->Options->Directories:先设置lib路径,选择Library files,在下方填入路径:C:\ProgramFiles\OpenCV\lib 然后选择include files,在下方填入路径: C:\Program Files\Ope。

3、nCV\cxcore\include C:\Program Files\OpenCV\cv\include C:\Program Files\OpenCV\cvaux\include C:\Program Files\OpenCV\ml\include C:\Program Files\OpenCV\otherlibs\highgui C:\Program Files\OpenCV\otherlibs\cvcam\include 然后选择source files,在下方填入路径: C:\Program Files\OpenCV\cv\src C:\Program Files\OpenCV\cxcore\src C:\Program Files\OpenCV\cvaux\src C:\Program Files\OpenCV\otherlibs\highgui C:\Program File。

4、s\OpenCV\otherlibs\cvcam\src\windows 最后点击“ok”,完成设置。 (2)项目设置 每创建一个将要使用OpenCV的VC Project,都需要给它指定需要的lib。菜单:Project->Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上 : cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib 三、OpenCV中常用数据结构1、CvPoint CvPoint定义基于二维整型坐标上的点,其结构如下。 Typedef struct CvPoint { int x; /* x坐标,通常以0为基点 */ int y; /* y坐标,通常以0为基点 */ }CvPoint; /*。

5、 构造函数*/ inline CvPoint cvPoint (int x;int y); /* 从CvPoint2D32f转换得来 */ inline CvPoint cvPointFrom32f(CvPoint2D32f point);2、CvPoint2D32f CvPoint2D32f定义基于二维浮点坐标上的点,其结构如下。 Typedef struct CvPoint2D32f { Float x; /* x坐标,通常以0为基点 */ Float y; /* y坐标,通常以0为基点 */ }CvPoint2D32f; /* 构造函数 */ inline CvPoint2D32f cvPoint2D32f(double x;double y); /* 从CvPoint转换得来 */inline CvPoint2D32f cvPointTo32f(CvPoint point);3、C。

6、vSize CvSize以像素为单位定义矩形框大小,其结构如下。 Typedef struct CvSize { int width; /* 矩形宽 */ int height; /* 矩形高 */ }CvSize; /* 构造函数 */ inline CvSize cvSize(int width;int height);4、CvScalar CvScalar定义可存放1~4个数值的数组,其结构如下。 Typedef struct CvScalar { double val[4]; }CvScalar; /* 构造函数用val0初始化val[0],用val1初始化val[1],等等 */ inline CvScalar cvScalar (double val0,double val1=0,double val2=0,double val3=0);/* 构造函数用val0123初始化va。

7、l0123 */ inline CvScalar cvScalarAll (double val0123);/* 构造函数用val0初始化val[0],用0初始化val[1]~val[3] */ inline CvScalar cvRealScalar (double val0);5、IplImage IplImage定义IPL图像的头部,其结构如下。 由于OpenCV主要针对的是计算机视觉方面的处理,因此在函数库中,最重要的结构体是IplImage结构。IplImage结构来源于Intel的。省略部分。标值,可以选择CV_WINDOW_AUTOSIZE和0两种值。CV_WINDOW_AUTOSIZE表示窗口尺寸与图像原始尺寸相同,0表示以固定的窗口尺寸显示图像。 3. 图像显示函数   函数cvShowImage是在指定的窗口中显示图像,其函数原型如下:   void cvShowIma。

8、ge( const char* name, const CvArr* image );   其中,name是窗口名称,image是图像类型指针,一般是IplImage指针。 4. 图像保存函数   函数cvSaveImage以指定的文件名保存IplImage类型的指针变量,其函数原型如下:   int cvSaveImage( const char* filename, const CvArr* image );   其中,filename是图像保存路径和名称,image是IplImage指针变量。 5. 图像销毁函数   函数cvReleaseImage销毁已定义的IplImage指针变量,释放占用内存空间。其函数原型如下:   void cvReleaseImage( IplImage** image );   其中,image为已定义的IplImage指针。 举例: IplImage。

9、 * src; src = cvLoadImage("fruits.jpg",-1); cvNamedWindow("fruits.jpg",0); cvShowImage("fruits.jpg",src); cvWaitKey(0); cvSaveImage("D:/save.jpg",src); cvDestroyWindow("Fruits.jpg"); cvReleaseImage(&src);6、cvCreateImage功能:函数cvCreateImage创建图像头并分配数据。格式:IplImage* cvCreateImage(CvSize size,int depth,int channels);参数: size 图像宽和高。 depth 像素位深度,可以是下面之一:IPL_DEPTH_8U 无符号8位整型数。IPL_DEPTH_8S 有符号8位整型数。IPL_DEPTH。

10、_16U 无符号16位整型数。IPL_DEPTH_16S 有符号16位整型数。IPL_DEPTH_32S 有符号32位整型数。IPL_DEPTH_32F 单精度浮点数。IPL_DEPTH_64F 双精度浮点数。 Channels 每个元素(像素)的通道号,可以是1,2,3,4。通道时交叉存储的,例如,通常的彩色图像数据排列是 b0 g0 r0 b1 g1 r1…虽然通常IPL图像格式可以存储非交叉存取的图像,并且OpenCV也能处理,但是此函数只能创建交叉存取图像。7、cvCircle 功能:绘制圆形。 格式:void cvCircle( CvArr* img, CvPoint center, int radius, CvScalar color, int thickness=1, int line type=8, int shift=0 ); 参数: img 图像;center 圆心坐标。

11、; radius 圆形的半径 color 线条的颜色; thickness 如果是正数,表示组成圆的线条的粗细程度。否则,表示圆是否被填充。 line_type 线条的类型。 shift 圆心坐标点和半径值的小数点位数。 说明: 函数cvCircle绘制或填充一个给定圆心和半径的圆。圆被感兴趣矩形所裁剪。 若指定圆的颜色,可以使用宏 CV_RGB ( r, g, b )。 8、CvtColor 功能:色彩空间转换 格式:void cvCvtColor( const CvArr* src, CvArr* dst, int code ); 参数: src 输入的 8-比特 或浮点图像. dst 输出的 8-比特 或浮点图像. code 色彩空间转换,通过定义 函数 cvCvtColor 将输入图像从一个色彩空间转换为另外一个色彩空间。 五、边缘检测函数1、Sobel 功能:使用扩展 Sobel。

12、 算子计算一阶、二阶、三阶或混合图 像差分。 格式:void cvSobel( const CvArr* src, CvArr* dst, int xorder, int yorder, int aperture_size=3 ); 参数: src 输入图像; dst 输出图像; xorder x方向上的差分阶数; yorder y方向上的差分阶数; aperture_size 扩展 Sobel 核的大小,必须是 1, 3, 5 或 7。 除 了尺寸为 1, 其它情况下, aperture_size ×aperture_size 可分 离内核将用来计算差分。 2、Laplace 功能:计算图像的 Laplacian 变换 格式:void cvLaplace( const CvArr* src, CvArr* dst, int aperture_size=3 ); 参数:src 输入图像.;。

13、dst 输出图像; aperture_size 核大小 (与 cvSobel 中定义一样). 函数 cvLaplace 计算输入图像的 Laplacian变换。3、Canny 功能:采用 Canny 算法做边缘检测 格式:void cvCanny( const CvArr* image, CvArr* edges, double threshold1, double threshold2, int aperture_size=3 ); 参数: image 输入图像;edges 输出的边缘图像 threshold1 第一个阈值;threshold2 第二个阈值 aperture_size Sobel 算子内核大小 (见 cvSobel). 函数 cvCanny 采用 CANNY 算法发现输入图像的边缘而且在输出图像中标识这些边缘。threshold1和threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割。。