1、OpenCV最基础的图像处理的例子 什么是OpenCV 开源C/C+计算机视觉库. 面向实时应用进行优化. 跨操作系统/硬件/窗口管理器. 通用图像/视频载入、存储和获取. 由中、高层API构成. 为Intel公司的 Integrated Performance Primitives (IPP) 提供了透明接口. 特性: 图像数据操作 (分配,释放, 复制, 设定, 转换). 图像与视频 I/O (基于文件/摄像头输入, 图像/视频文件输出). 矩阵与向量操作与线性代数计算(相乘, 求解, 特征值, 奇异值分解SVD). 各种动态数据结构(列表, 队列, 集, 树, 图). 基本图像处理(滤波
2、, 边缘检测, 角点检测, 采样与插值, 色彩转换, 形态操作, 直方图, 图像金字塔). 结构分析(连接成分, 轮廓处理, 距离转换, 模板匹配, Hough转换, 多边形近似, 线性拟合, 椭圆拟合, Delaunay三角化). 摄像头标定(寻找并跟踪标定模板, 标定, 基础矩阵估计, homography估计, 立体匹配). 动作分析(光流, 动作分割, 跟踪). 对象辨识(特征方法, 隐马可夫链模型HMM). 基本GUI(显示图像/视频,键盘鼠标操作, 滚动条). 图像标识(直线, 圆锥, 多边形, 文本绘图) OpenCV 模块: cv - OpenCV 主要函数. cvaux -辅
3、助 (实验性) OpenCV 函数. cxcore - 数据结构与线性代数算法. highgui - GUI函数. 资料链接 参考手册: /docs/index.htm 网络资源: 官方网页: 软件下载: 书籍: Open Source Computer Vision Library by Gary R. Bradski, Vadim Pisarevsky, and Jean-Yves Bouguet, Springer, 1st ed. (June, 2006). 视频处理例程 (位于 /samples/c/目录中): 色彩跟踪: camshiftdemo 点跟踪: lkdemo 动作分割:
4、 motempl 边缘检测: laplace 图像处理例程(位于/samples/c/目录中): 边缘检测: edge 分割: pyramid_segmentation 形态: morphology 直方图: demhist 距离转换: distrans 椭圆拟合fitellipse OpenCV 命名约定 函数命名: cvActionTargetMod(.) Action = 核心功能(例如 设定set, 创建create) Target = 操作目标 (例如 轮廓contour, 多边形polygon) Mod = 可选修饰词 (例如说明参数类型) 矩阵数据类型: CV_(S|U|F)C
5、S = 带符号整数 U = 无符号整数 F = 浮点数 例: CV_8UC1 表示一个8位无符号单通道矩阵, CV_32FC2 表示一个32位浮点双通道矩阵. 图像数据类型: IPL_DEPTH_(S|U|F) 例: IPL_DEPTH_8U 表示一个8位无符号图像. IPL_DEPTH_32F 表示一个32位浮点数图像. 头文件: #include #include #include #include / 不必要 - 该头文件已在 cv.h 文件中包含编译命令 Linux系统: g+ hello-world.cpp -o hello-world -I /usr/local/include/o
6、pencv -L /usr/local/lib -lm -lcv -lhighgui -lcvaux Windows系统: 注意在项目属性中设好OpenCV头文件以及库文件的路径.C程序实例 / hello-world.cpp/ 一个简单的OpenCV程序/ 它从一个文件中读取图像,将色彩值颠倒,并显示结果. /#include #include #include #include #include int main(int argc, char *argv) IplImage* img = 0; int height,width,step,channels; uchar *data; int
7、 i,j,k; if(argc2) printf(Usage: main n7); exit(0); / 载入图像 img=cvLoadImage(argv1); if(!img) printf(Could not load image file: %sn,argv1); exit(0); / 获取图像数据 height = img-height; width = img-width; step = img-widthStep; channels = img-nChannels; data = (uchar *)img-imageData; printf(Processing a %dx%d
8、image with %d channelsn,height,width,channels); / 创建窗口 cvNamedWindow(mainWin, CV_WINDOW_AUTOSIZE); cvMoveWindow(mainWin, 100, 100); / 反色图像 for(i=0;iheight;i+) for(j=0;jwidth;j+) for(k=0;k0 载入图像转为三通道彩色图像 =0 载入图像转为单通道灰度图像 imageData + i*img-widthStep)j=111; 对多通道字节图像: IplImage* img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,3);(ucha
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1