OpenCV 编程简介教程(中文版),Image Processing, C

OpenCV 编程简介教程(中文版),Image Processing, C
OpenCV 编程简介教程(中文版),Image Processing, C

Open Source Computer Vision Library

intro.html#SECTION00040000000000000000

https://www.360docs.net/doc/c214274003.html,/chenyusiyuan/archive/2010/01/26/5259060.aspx

2.2 2、输入处理

2.2.1 (1)处理鼠标事件:

2.2.2 (2)处理键盘事件:

2.2.3 (3)处理滑动条事件:

3 三、OpenCV的基本数据结构

3.1 1、图像数据结构

3.1.1 (1) IPL 图像:

3.2 2、矩阵与向量

3.2.1 (1)矩阵:

3.2.2 (2)一般矩阵:

3.2.3 (3)标量:

3.3 3、其它结构类型

3.3.1 (1)点:

3.3.2 (2)矩形框大小(以像素为精度):

3.3.3 (3)矩形框的偏置和大小:

4 四、图像处理

4.1 1、图像的内存分配与释放

4.1.1 (1)分配内存给一幅新图像:

4.1.2 (2)释放图像:

4.1.3 (3)复制图像:

4.1.4 (4)设置/获取感兴趣区域ROI:

4.1.5 (5)设置/获取感兴趣通道COI:

4.2 2、图像读写

4.2.1 (1)从文件中读入图像:

4.2.2 (2)保存图像:

4.3 3、访问图像像素

4.3.1 (1)假设你要访问第k通道、第i行、第j列的像素。

4.3.2 (2)间接访问: (通用,但效率低,可访问任意格式的图像)

4.3.3 (3)直接访问: (效率高,但容易出错)

4.3.4 (4)基于指针的直接访问: (简单高效)

4.3.5 (5)基于 c++ wrapper 的直接访问: (更简单高效)

4.4 4、图像转换

4.4.1 (1)字节型图像的灰度-彩色转换:

4.4.2 (2)彩色图像->灰度图像:

4.4.3 (3)不同彩色空间之间的转换:

4.5 5、绘图指令

4.5.1 (1)绘制矩形:

4.5.2 (2)绘制圆形:

4.5.3 (3)绘制线段:

4.5.4 (4)绘制一组线段:

4.5.5 (5)绘制一组填充颜色的多边形:

4.5.6 (6)文本标注:

5 五、矩阵处理

5.1 1、矩阵的内存分配与释放

5.1.1 (1)总体上:

5.1.2 (2)为新矩阵分配内存:

5.1.3 (3)释放矩阵内存:

5.1.4 (4)复制矩阵:

5.1.5 (5)初始化矩阵:

5.1.6 (6)初始化矩阵为单位矩阵:

5.2 2、访问矩阵元素

5.2.1 (1)假设需要访问一个2D浮点型矩阵的第(i, j)个单元.

5.2.2 (2)间接访问:

5.2.3 (3)直接访问(假设矩阵数据按4字节行对齐):

5.2.4 (4)直接访问(当数据的行对齐可能存在间隙时 possible alignment gaps):

5.2.5 (5)对于初始化后的矩阵进行直接访问:

5.3 3、矩阵/向量运算

5.3.1 (1)矩阵之间的运算:

5.3.2 (2)矩阵之间的元素级运算:

5.3.3 (3)向量乘积:

5.3.4 (4)单一矩阵的运算:

5.3.5 (5)非齐次线性方程求解:

5.3.6 (6)特征值与特征向量 (矩阵为方阵):

6 六、视频处理

6.1 1、从视频流中捕捉一帧画面

6.1.1 (1) OpenCV 支持从摄像头或视频文件(AVI格式)中捕捉帧画面.

6.1.2 (2)初始化一个摄像头捕捉器:

6.1.3 (3)初始化一个视频文件捕捉器:

6.1.4 (4)捕捉一帧画面:

6.1.5 (5)释放视频流捕捉器:

6.2 2、获取/设置视频流信息

6.2.1 (1)获取视频流设备信息:

6.2.2 (2)获取帧图信息:

6.2.3 (3)设置从视频文件抓取的第一帧画面的位置:

6.3 3、保存视频文件

6.3.1 (1)初始化视频编写器:

6.3.2 (2)保持视频文件:

6.3.3 (3)释放视频编写器:

[编辑]一、简介

[编辑] 1、OpenCV的特点

[编辑](1)总体描述

OpenCV是一个基于C/C++语言的开源图像处理函数库

其代码都经过优化,可用于实时处理图像

具有良好的可移植性

可以进行图像/视频载入、保存和采集的常规操作

具有低级和高级的应用程序接口(API)

提供了面向Intel IPP高效多媒体函数库的接口,可针对你使用的Intel CPU优化代码,提高程序性能(译注:OpenCV

2.0版的代码已显著优化,无需IPP来提升性能,故2.0版不再提供IPP接口)

[编辑](2)功能

图像数据操作(内存分配与释放,图像复制、设定和转换)

Image data manipulation (allocation, release, copying, setting, conversion).

图像/视频的输入输出(支持文件或摄像头的输入,图像/视频文件的输出)

Image and video I/O (file and camera based input, image/video file output).

矩阵/向量数据操作及线性代数运算(矩阵乘积、矩阵方程求解、特征值、奇异值分解)

Matrix and vector manipulation and linear algebra routines (products, solvers, eigenvalues, SVD).

支持多种动态数据结构(链表、队列、数据集、树、图)

Various dynamic data structures (lists, queues, sets, trees, graphs).

基本图像处理(去噪、边缘检测、角点检测、采样与插值、色彩变换、形态学处理、直方图、图像金字塔结构)Basic image processing (filtering, edge detection, corner detection, sampling and interpolation, color conversion, morphological operations, histograms, image pyramids).

结构分析(连通域/分支、轮廓处理、距离转换、图像矩、模板匹配、霍夫变换、多项式逼近、曲线拟合、椭圆拟

合、狄劳尼三角化)

Structural analysis (connected components, contour processing, distance transform, various moments, template matching, Hough transform, polygonal approximation, line fitting, ellipse fitting, Delaunay triangulation).

摄像头定标(寻找和跟踪定标模式、参数定标、基本矩阵估计、单应矩阵估计、立体视觉匹配)

Camera calibration (finding and tracking calibration patterns, calibration, fundamental matrix estimation,

homography estimation, stereo correspondence).

运动分析(光流、动作分割、目标跟踪)

Motion analysis (optical flow, motion segmentation, tracking).

目标识别(特征方法、HMM模型)

Object recognition (eigen-methods, HMM).

基本的GUI(显示图像/视频、键盘/鼠标操作、滑动条)

Basic GUI (display image/video, keyboard and mouse handling, scroll-bars).

图像标注(直线、曲线、多边形、文本标注)

Image labeling (line, conic, polygon, text drawing)

[编辑](3) OpenCV模块

cv – 核心函数库

cvaux – 辅助函数库

cxcore – 数据结构与线性代数库

highgui – GUI函数库

ml – 机器学习函数库

[编辑] 2、有用的学习资源

[编辑](1)参考手册:

/docs/index.htm (译注:在你的OpenCV安装目录内)

[编辑](2)网络资源:

官方网站: https://www.360docs.net/doc/c214274003.html,/technology/computing/opencv/

软件下载: https://www.360docs.net/doc/c214274003.html,/projects/opencvlibrary/

[编辑](3)书籍:

Open Source Computer Vision Library

by Gary R. Bradski, Vadim Pisarevsky, and Jean-Yves Bouguet, Springer, 1st ed. (June, 2006). chenyusiyuan: 补充以下书籍

Learning OpenCV - Computer Vision with the OpenCV Library

by Gary Bradski & Adrian Kaehler, O'Reilly Media, 1 st ed. (September, 2008).

OpenCV教程——基础篇

作者:刘瑞祯于仕琪,北京航空航天大学出版社,出版日期:200706

[编辑](4)视频处理例程(在 /samples/c/):

颜色跟踪: camshiftdemo

点跟踪: lkdemo

动作分割: motempl

OpenCV主要函数介绍

4.1 OpenCV主要函数介绍 1) cvLoadImage 从文件中读取图像 IplImage* cvLoadImage(const char* filename,int flags=CV_LOAD_IMAGE_COLOR ); 函数cvLoadImage从指定文件读入图像,返回读入图像的指针。其中filename是要被读入的文件的文件名;flags指定读入图像的颜色和深度。 2)cvSaveImage 保存图像到文件 int cvSaveImage( const char* filename, const CvArr* image ); 函数cvSaveImage保存图像到指定文件。其中filename保存文件名。image 要保存的图像。图像格式的的选择依赖于filename的扩展名,只有8位单通道或者3通道(通道顺序为'BGR' )可以使用这个函数保存。 3)cvQueryFrame从摄像头或者文件中抓取并返回一帧 IplImage* cvQueryFrame( CvCapture* capture ); 函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。这个函数仅仅是函数cvGrabFrame和函数cvRetrieveFrame在一起调用的组合。返回的图像不可以被用户释放或者修改。其中capture视频获取结构。。 4)cvCaptureFromCAM 初始化摄像头 CvCapture* cvCaptureFromCAM( int index ); 函数cvCaptureFromCAM给从摄像头的视频流分配和初始化CvCapture结构。 其中index要使用的摄像头索引。如果只有一个摄像头或者用哪个摄像头也无所谓,那使用参数-1应该便可以。 5)cvHaarDetectObjects 用来检测图像中的人脸区域 CV API(CvSeq*) cvHaarDetectObjects( const CvArr* image, CvHaarClassifierCascade* cascade, CvMemStorage* storage, double scale_factor CV_DEFAULT(1.1), int min_neighbors CV_DEFAULT(3), int flags CV_DEFAULT(0), CvSize min_size CV_DEFAULT(cvSize(0,0)), CvSize max_size CV_DEFAULT(cvSize(0,0))); 用于快速检测人脸区域,便于提取得到人脸数据。其中image 为被检图像,cascade为 haar分类器级联的内部标识形式,storage 为用来存储检测到的一

OpenCV最基础的图像处理的例子

?什么是OpenCV ?开源C/C++计算机视觉库. ?面向实时应用进行优化. ?跨操作系统/硬件/窗口管理器. ?通用图像/视频载入、存储和获取. ?由中、高层API构成. ?为Intel?公司的Integrated Performance Primitives (IPP) 提供了透明接口. ?特性: ?图像数据操作(分配,释放, 复制, 设定, 转换). ?图像与视频I/O (基于文件/摄像头输入, 图像/视频文件输出). ?矩阵与向量操作与线性代数计算(相乘, 求解, 特征值, 奇异值分解SVD). ?各种动态数据结构(列表, 队列, 集, 树, 图). ?基本图像处理(滤波, 边缘检测, 角点检测, 采样与插值, 色彩转换, 形态操作, 直方图, 图像金字塔). ?结构分析(连接成分, 轮廓处理, 距离转换, 模板匹配, Hough转换, 多边形近似, 线性拟合, 椭圆拟合, Delaunay三角化). ?摄像头标定 (寻找并跟踪标定模板, 标定, 基础矩阵估计, homography估计, 立体匹配). ?动作分析(光流, 动作分割, 跟踪). ?对象辨识 (特征方法, 隐马可夫链模型HMM). ?基本GUI(显示图像/视频, 键盘鼠标操作, 滚动条). ?图像标识 (直线, 圆锥, 多边形, 文本绘图) ?OpenCV 模块: ?cv - OpenCV 主要函数. ?cvaux - 辅助(实验性) OpenCV 函数. ?cxcore - 数据结构与线性代数算法. ?highgui - GUI函数. 资料链接 ?参考手册: ?/docs/index.htm ?网络资源: ?官方网页: https://www.360docs.net/doc/c214274003.html,/technology/computing/opencv/?软件下载: https://www.360docs.net/doc/c214274003.html,/projects/opencvlibrary/ ?书籍: ?Open Source Computer Vision Library by Gary R. Bradski, Vadim Pisarevsky, and Jean-Yves Bouguet, Springer, 1st ed. (June, 2006). ?视频处理例程(位于/samples/c/目录中): ?色彩跟踪: camshiftdemo ?点跟踪: lkdemo

opencv 3.1 例程介绍

1.calib3d:相机标定以及三维重建。 2.core:核心模块,包括OpenCV 基本的数据结构,离散傅里叶变换,XML 和YAML 文 件的写入与读取,扫描图像,opencv的互操作,英特尔IPP 异步转换。 3.features2D:AKAZE特征检测与跟踪。 4.gpu:gpu基本操作 5.HighGUI:包括GDAL支持,视频PSNR,SSIM质量指标,视频存储,设置滚动条,更改图 像对比度和亮度。 6.Histograms_Matching:包括直方图,直方图反向投影,直方图比较,直方图均衡,直方 图匹配。 7.ImgProc:包括图像叠加,线性变换,形态学处理,图像金字塔,图像滤波,二值化。 8.ImgTrans:包括Canny,Sobel边缘检测,图像边界扩展,使用filter2D构造线性滤波器, 图像几何变换,霍夫变换,拉普拉斯变换,图像分割,图像重映射。 9.Introduction:图像显示。 10.Ml:机器学习,包括主成分分析(PCA),支持向量机(SVM),非线性SVM。 11.objectDetection:目标检测。 12.photo:计算摄影学,包括去色,HDR成像,非真实性渲染,泊松克隆。 13.ShapeDescriptors:包括查找轮廓,计算多边形的矩,测试点是否在多边形中。 14.TrackingMotion:包括角点检测,Harris角点检测,Shi-Tomasi角点检测,亚像素级角点 检测。 15.Video:背景提取。 16.Viz:基于VTK库实现三维可视化。 17.xfeatures2D:背景提取。 1.3calibration.cpp,calibration.cpp:相机定标。 2.autofocus.cpp:自动聚焦。 3.bgfg_segm.cpp:背景分割。 4.camshiftdemo.cpp:min-shift跟踪。 5.cloning_demo.cpp,cloning_gui.cpp:泊松克隆。 6.connected_components.cpp:显示连通分量。 7.contours2.cpp:查找,绘制填充轮廓。 8.convexhull.cpp:获取轮廓凸包。 9.cout_mat.cpp:矩阵输出。 10.create_mask.cpp:生成掩码。 11.dbt_face_detection.cpp:人脸识别(仅用于UNIX,ANDROID)。 12.delaunay2.cpp:对随机点进行delaunay三角剖分。 13.demhist.cpp:直方图均衡化,调节图像的亮度与对比度。 14.detect_blob.cpp:使用BLOB(二进制大对象)进行区域检测和滤波。 15.detect_mser.cpp:使用MSER进行斑点区域检测。 16.dft.cpp:离散傅里叶变换。 17.ffilldemo.cpp:漫水填充。 18.filestorage.cpp:Mat矩阵存储,读写XML/YML文件。 19.fitellipse.cpp:椭圆拟合。 20.grabcut.cpp:grabcut图像分割。

opencv自学笔记

OPENCV 一、Opencv 基本架构分析 多模块组合起来的一个软件开发工具包(SDK) 1、【calib3d】 2、【cntrib】 3、【core】:核心功能模块。 4、【imgproc】:图像处理模块。 5、【features2d】 6、【flann】 7、【gpu】 8、【highgui】:高层GUI图形用户界面,包含媒体的输 入输出、视频捕捉、图像视频的编码和解码、图形交互界面的接口内容等。 9、【legacy】 … 二、HighGui图形用户界面初步 1、opencv的命名空间:opencv的C++类和函数都是定 义在命名空间cv之内的,访问方法:(1)、在代码 开头的适当位置加上using namespace cv (2)、在 使用opencv的每个内和函数时,都加入cv::命名 空间。 2、图像的载入:imread()函数

Mat imread(const string& filename, int flags=1); (1)、const string&类型的filename,填我们需要载 入的图片路径名称。 (2)、int类型的flags,为载入标志,它指一个加载 图像的颜色类型。 3、图像的显示:imshow()函数 Void imshow(const string& winname, InputArray mat); (1)、const string&类型的winname,填需要显示的窗口标识名称。 (2)、InputArray类型的mat,填需要显示的图像。 4、创建窗口:namedWindow()函数 void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE); (1)、const string&类型的name,填写被作用窗口的标识符的窗口名称。 (2)、int类型的flags,窗口的标识,可填写WINDOW_AUTOSIZE、WINDOW_NORMAL或WINDOW_OPENGL 5、输出到文件:imwrite()函数 bool imwrite(const string& finename, InputArray img , const vector& params=vector() );

OpenCV常用函数说明

OpenCV基础篇中的常用函数说明: (1)函数名: cvActionTargetMod(...) Action = 核心功能(core functionality) (e.g. set, create) Target = 目标图像区域(target image area) (e.g. contour, polygon) Mod = (可选的)调整语(optional modifiers) (e.g. argument type) (2)矩阵数据类型: CV_(S|U|F)C S = 符号整型 U = 无符号整型 F = 浮点型 E.g.: CV_8UC1 是指一个8位无符号整型单通道矩阵, CV_32FC2是指一个32位浮点型双通道矩阵. (3)图像数据类型: IPL_DEPTH_(S|U|F) E.g.: IPL_DEPTH_8U 图像像素数据是8位无符号整型. IPL_DEPTH_32F图像像素数据是32位浮点型. (4)头文件: #include #include #include #include #include // 一般不需要,cv.h 内已包含该头文件 4、编译建议 (1)Linux: g++ hello-world.cpp -o hello-world / -I /usr/local/include/opencv -L /usr/local/lib / -lm -lcv -lhighgui -lcvaux (2)Windows: 在Visual Studio的‘选项’和‘项目’中设置好OpenCV相关文件的路径。 5、C例程

opencv应用函数

目录 1 一、简介 1.1 1、OpenCV的特点 1.1.1 (1)总体描述 1.1.2 (2)功能 1.1.3 (3)OpenCV模块 1.2 2、有用的学习资源 1.2.1 (1)参考手册: 1.2.2 (2)网络资源: 1.2.3 (3)书籍: 1.2.4 (4)视频处理例程(在/samples/c/): 1.2.5 (5)图像处理例程(在/samples/c/): 1.3 3、OpenCV 命名规则 1.3.1 (1)函数名: 1.3.2 (2)矩阵数据类型: 1.3.3 (3)图像数据类型: 1.3.4 (4)头文件: 1.4 4、编译建议 1.4.1 (1)Linux: 1.4.2 (2)Windows: 1.5 5、C例程 2 二、GUI 指令 2.1 1、窗口管理 2.1.1 (1)创建和定位一个新窗口: 2.1.2 (2)载入图像: 2.1.3 (3)显示图像: 2.1.4 (4)关闭窗口: 2.1.5 (5)改变窗口大小: 2.2 2、输入处理 2.2.1 (1)处理鼠标事件: 2.2.2 (2)处理键盘事件: 2.2.3 (3)处理滑动条事件: 3 三、OpenCV的基本数据结构 3.1 1、图像数据结构 3.1.1 (1)IPL 图像: 3.2 2、矩阵与向量 3.2.1 (1)矩阵: 3.2.2 (2)一般矩阵: 3.2.3 (3)标量: 3.3 3、其它结构类型 3.3.1 (1)点:

3.3.2 (2)矩形框大小(以像素为精度): 3.3.3 (3)矩形框的偏置和大小: 4 四、图像处理 4.1 1、图像的内存分配与释放 4.1.1 (1)分配内存给一幅新图像: 4.1.2 (2)释放图像: 4.1.3 (3)复制图像: 4.1.4 (4)设置/获取感兴趣区域ROI: 4.1.5 (5)设置/获取感兴趣通道COI: 4.2 2、图像读写 4.2.1 (1)从文件中读入图像: 4.2.2 (2)保存图像: 4.3 3、访问图像像素 4.3.1 (1)假设你要访问第k通道、第i行、第j列的像素。 4.3.2 (2)间接访问: (通用,但效率低,可访问任意格式的图像) 4.3.3 (3)直接访问: (效率高,但容易出错) 4.3.4 (4)基于指针的直接访问: (简单高效) 4.3.5 (5)基于c++ wrapper 的直接访问: (更简单高效) 4.4 4、图像转换 4.4.1 (1)字节型图像的灰度-彩色转换: 4.4.2 (2)彩色图像->灰度图像: 4.4.3 (3)不同彩色空间之间的转换: 4.5 5、绘图指令 4.5.1 (1)绘制矩形: 4.5.2 (2)绘制圆形: 4.5.3 (3)绘制线段: 4.5.4 (4)绘制一组线段: 4.5.5 (5)绘制一组填充颜色的多边形: 4.5.6 (6)文本标注: 5 五、矩阵处理 5.1 1、矩阵的内存分配与释放 5.1.1 (1)总体上: 5.1.2 (2)为新矩阵分配内存: 5.1.3 (3)释放矩阵内存: 5.1.4 (4)复制矩阵: 5.1.5 (5)初始化矩阵: 5.1.6 (6)初始化矩阵为单位矩阵: 5.2 2、访问矩阵元素 5.2.1 (1)假设需要访问一个2D浮点型矩阵的第(i, j)个单元. 5.2.2 (2)间接访问: 5.2.3 (3)直接访问(假设矩阵数据按4字节行对齐): 5.2.4 (4)直接访问(当数据的行对齐可能存在间隙时possible alignment gaps):

Opencv的基本操作

实验六 OPENCV的基本操作 张慧彬 2013-8-24 机器人研究中心

目录 一.OPENCV的基本算法及一般应用 (2) 1.从磁盘加载并在屏幕上显示图象 (2) 2.播放AVI视频 (3) 3.视频播放控制 (4) 4.载入一幅图象并进行平滑处理 (6) 二.调试OPTICAL_FLOW_DEMO.CPP程序 (7) 三.OENCV的应用之CANNY边缘检测 (8) 1. C ANNY边缘检测基本原理 (8) 2.C ANNY边缘检测流程 (8) 四.试验总结及心得 (12)

一. Opencv的基本算法及一般应用 1.从磁盘加载并在屏幕上显示图象 #include”highgui.h” int main(int argc,char** argv); { IplImage *img=cvLoadImage(agrv[1]); //将图像文件加载至内存,cvLoadImage()函数是一个高层调用接口,它通过文件名确定被加载文件的格式,。IplImage结构体将是我们在使用OpenCV时会最常用到的数据结构 cvNamedWindow(”Example 1”,CV_WINDOW_AUTOSIZE); // cvNamedWindow()函数用于在屏幕上创建一个窗口,将被显示的图像包含于该窗口中。函数的第一个参数指定了该窗口的窗口标题,cvNamedWindow()函数的第二个参数定义了窗口的属性。该参数可被设置为0(默认值)或CV_WINDOW_AUTOSIZE,设置为0时,窗口的大小不会因图像的大小而改变,图像只能在窗口中根据窗口的大小进行拉伸或缩放;而设置为 CV_WINDOW_AUTOSIZE时,窗口则会根据图像的实际大小自动进行拉伸或缩放,以容纳图像 cvShowImage(”Example 1”,img);// 只要有一个与某个图像文件相对应的IplImage*类型的指针,我们就可以在一个已创建好的窗口(使用cvNamedWindow()函数创建)中使用cvShowImage()函数显示该图像。cvShowImage()函数通过设置其第一个参数确定在哪个已存在的窗口中显示图像。cvShowImage()函数被调用时,该窗口将被重新绘制,并且图像也会显示在窗口中。如果该窗口在创建时被指定CV_WINDOW_AUTOSIZE标志作为cvNamedWindow()函数的第二个参数,该窗口将根据图像的大小自动调整为与图像一致。 cvWaitKey(0);// 使程序暂停,等待用户触发一个按键操作。但如果将该函数参数设为一个正数,则程序将暂停一段时间,时间长为该整数值个毫秒单位,然后继续执行程序,即使用户没有按下任何键。当设置该函数参数为0或负数时,程序将一直等待用户触发按键操作。

介绍下使用 OpenCV 的三个基本功能以及噪声的类型分析与处理

介绍下使用OpenCV 的三个基本功能以及噪声的类型分析与处理总结学习下图像处理方面基础知识。 这是第一篇,简单的介绍下使用OpenCV 的三个基本功能: ?图像的读取?图像的显示?访问图像的像素值 然后概述下图像噪声的类型,并为图像添加两种常见的噪声:高斯噪声和椒盐噪声。最后,使用中值滤波和均值滤波来处理带有噪声的图像。 OpenCV 基础 在OpenCV 中,完成图像的输入输出以及显示,只需要以下几个函数: 1. namedWindow 创建一个可以通过其名字引用的窗口。第一个参数,设置窗口的name,可以通过name 引用该窗口;第二个参数,设置窗口的大小。有以下几个选择: ?WINDOW_NORMAL or WINDOW_AUTOSIZE 调整窗口的大小以适应图像,不同的是,使用WINDOW_NORMAL可以手动调整窗口的大小;WINDOW_AUTOSIZE不能调整窗口的大小。?WINDOW_FREERATIO or WINDOW_KEEPRATIO 改变窗口时是否会保持图像的ratio不变,没发现这俩有什么区别。 2. imshow 显示图像 3. imread 读取图像数据到Mat中,第一个参数是图像的文件名;第二个参数是标志,标识怎么处理图像的色彩。常用的几个选项: ?IMREAD_UNCHANGED 和原图像保持一直不变?IMREAD_GRAYSCALE 将图像转换为单通道的灰度图?IMREAD_COLOR 将图像转换为3通道的BGR,默认选项?IMREAD_REDUCED_GRAYSCALE_2 IMREAD_REDUCED_GRAYSCALE_4 IMREAD_REDUCED_GRAYSCALE_8 单通道灰度图读入图像,并减小图像的大小。减小的值为1/2,1/4,1/8?IMREAD_REDUCED_COLOR_2 IMREAD_REDUCED_COLOR_4 IMREAD_REDUCED_COLOR_2 3通道BGR读入图像,并减小图像的大小。减小的值为

OpenCV学习笔记

第一章概述 OpenCV 是有Intel公司资助的开源计算机视觉库,它由一系列C函数和少量C++类构成,实现图像处理和计算机视觉方面的很多通用算法。 1、OpenCV的特征 (1)开源计算机视觉库采用C/C++编写 (2)使用目的是开发实时的应用程序 (3)独立于操作系统、硬件和图形管理器 (4)具有通用的图像/视频载入、保存和获取模块 (5)具有底层和高层的应用开发包 2、OpenCV的功能 (1)对图像数据的操作,包括分配、释放、复制、设置和转换数据 (2)对图像和视频的输入输出,指文件和摄像头作为输入,图像和视频文件作为输出(3)具有对矩阵和向量的操作及线性代数的算法程序,包括矩阵积、解方程、特征值以及奇异值 (4)可对各种动态数据结构,如列表、队列、集合、树和图等进行操作 (5)具有基本的数字图像处理能力,如可以进行滤波、边缘检测、角点检测、采样于差值、色彩转换、形态操作、直方图和图像金字塔等操作 (6)对各种结构进行分析,包括连接部件分析、轮廓处理、距离变换、各种距的计算、模板匹配、Hough变换、多边行逼近、直线拟合、椭圆拟合、和Delaunay三角划分等 (7)对摄像头的定标,包括发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计和立体对应 (8)对运动的分析,如对光流、运动分割和跟踪的分析 (9)对目标的识别,如可采用特征法和隐马尔科夫模型(HMM)法 (10)具有基本的GUI功能,包括图像与视频显示、键盘和鼠标事件处理及滚动条等(11)课对图像标注,如对线,二次曲线和多边行进行标注 3.OpenCV模块 ?cv –核心函数库 ?cvaux –辅助函数库 ?cxcore –数据结构与线性代数库 ?highgui – GUI函数库 ?ml –机器学习函数库

OPENCV训练图像集中文版

级联分类器训练 引言 级联分类器的工作主要包括两个阶段:训练和检测。检测阶段被描述在一个常规的OpenCV 文件的objdetect模块的文档里。文档介绍了级联分类器的一些基本信息。目前的指南描述了如何训练级联分类器:一个训练数据集和运行训练应用程序的准备。 重要的笔记 在OpenCV里有两个应用程序可以用来训练级联分类器:opencv_haartraining和opencv_traincascade。opencv_traincascade是一个较新的版本,用C++按照OpenCV2.x API 的标准编写。但这两个应用程序之间的主要区别是,opencv_traincascade同时支持Haar [Viola2001]和LBP[Liao2007](局部二值模式)的特征。相比于Haar特征,LBP特征是整数,所以用LBP训练和检测比用Haar特征快好几倍。至于LBP和Haar的检测质量取决于训练:首先是训练数据集的品质还有训练参数。训练一个和基于Haar的分类有几乎相同的质量的基于LBP的分类是有可能的。 opencv_traincascade和opencv_haartraining以不同的文件格式存储训练好的分类器。值得注意的是,较新的级联检测接口(见objdetect模块的级联分类器类)两种格式都支持。opencv_traincascade可以用旧格式保存(输出)训练好的级联。但opencv_traincascade和opencv_haartraining无法在中断后以另一种格式加载(输入)一个分类器来进一步训练。 注意,opencv_traincascade应用程序可以使用TBB实现多线程。在多核模式下使用,OpenCV 必须要用TBB来构建。 并且这有一些和训练相关的辅助工具。 ·opencv_createsamples是用来准备正训练数据集和测试样本集的。 opencv_createsamples产生一个opencv_haartraining和opencv_traincascade都支持的格式的正样本数据集。输出的是一个以*.VEC为后缀的文件,它是一种包含图像的二进制格式。 ·opencv_performance可用于评估分类器的质量,但是只能评估opencv_haartraining的训练。它需要一个图像标记的集合,运行分类器并且报告性能,即找到的对象的数量,没有对象的数量,错误警报的数量等信息。 因为opencv_haartraining是一个过时的应用,只对opencv_traincascade进行进一步的讲解。为opencv_traincascade准备训练数据时opencv_createsamples工具是必需的,所以它也将被详述。 opencv_createsamples工具 一个opencv_createsamples工具提供了数据集的生成功能,写和读,用数据集这个术语作为训练集和测试集的统称。 训练数据准备 为了训练我们需要一组样本。有两种类型的样品:正和负。负样本对应于非目标图像。正样本对应于包含了被测物体的图像。集负样本必须手动创建,而一组正样本由opencv_createsamples工具创建。

OpenCV3 模块说明

OpenCV3.0Modules Cool stuff you might not have known about Vadim Pisarevsky Principal Engineer, Itseez

Introduction ?Doing OpenCV is like sitting near the ocean and collecting shells as they get to the coast ?In OpenCV there are 1000’s of them, I will show you 9

OpenCV ?clone https://www.360docs.net/doc/c214274003.html,/itseez/opencv& opencv_contrib ?build it; do not install it! ?use the following CMake file for you sample cmake_minimum_required(VERSION 2.8) project(myopencv_sample) find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) set(the_target "myopencv_sample") add_executable(${the_target} main.cpp) # add other .cpp # and .h files here target_link_libraries(${the_target} ${OpenCV_LIBS}) ?locate OpenCVConfig.cmake when cmake complains ?you are good to go!

opencv模块功能简介

Opencv模块学习 库core Basic Structures 基础数据结构,大型的mat,sparsemat,algorithm(半球匹配,块匹配,背景提取,混合高斯,字典集,sift),智能指针ptr Basic C Structures and Operations 一些C API, 主要是cv1.0时代的老旧函数,感觉没什么用 Dynamic Structures Cv1.0时代的函数,现在可以用vector代替 Operations on Arrays 数据处理,DCT,PCA,SVD,RNG(Random number generator),常用对inputarray的函数Drawing Functions 画图函数,点线园,填充写字都可以 XML/YAML Persistence Filestorage和filenode,用于在xml文件存取 XML/YAML Persistence (C API) cv1.0时代产物 Clustering 就两个函数Kmeans和partition Utility and System Functions and Macros 一些奇怪的函数,四舍五入函数,format,计时,监视错误 OpenGL interoperability Opengl和opencv的结合,buffer,texture2d,arrays 库Imgproc Image Filtering 各种滤波器,滤波器核(laplacian), 基础滤波器,双边,自适应双边,模糊,边缘插值,箱(均值)滤波,高斯金字塔,生成图片边缘,高斯滤波,线性,形态学,sobel,scharr,模糊下采样,上采样模糊,可以生成箱滤波器、快速线性可分滤波器(sobel或scharr)、高斯、线性、形态学、线性可分 Geometric Image Transformations 图像map色度变换,由三点数据求affine仿射矩阵,由四点数据求视角变换,不同尺度截取目标图像矩形区域,获取旋转矩阵,反仿射变换,极坐标变换,对数极坐标变换,几何坐标插值变换,大小变化,仿射变换,透视变换,矫正视差,畸变矫正图片,畸变校正点,,Miscellaneous Image Transformations 自适应阈值,颜色空间变换,离最近的零点的距离计算(应该用于漫水算法吧),漫水算法,图像积分(用于某些算法haar-like),阈值法,watershed分水岭算法—自适应迭代阈值,GrabCut自分割背景提取(基于GraphCut,灰度直方图-混合高斯前景背景建模迭代),Drawing Functions ColorMaps in OpenCV Histograms

实验一 熟悉OpenCV环境和基本操作

实验一熟悉OpenCV环境和基本操作

————————————————————————————————作者:————————————————————————————————日期:

实验一熟悉OpenCV环境和基本操作 一、实验目的: 熟悉OpenCV运行环境和了解图像的基本操作。 二、实验内容: 1. OpenCV的安装与配置。 2. 了解了OpenCV,尤其是core模块、核心功能、imgproc模块和highgui模块、高层GUI 和媒体I/O。 3. 利用OpenCV实现了读入一个图像文件并将其显示在屏幕上;图像创建、保存和复制;图像边界的求取。 三、实验作业: 1·实验内容的结果 i.读入一个图像文件并将其显示在屏幕上,结果如下图1: 图1 读入图片并显示 ii.图像创建、保存和复制,结果如下图2: 图2 创建、保存复制图像

iii.图像边界的求取,结果如下图3: 图3 Sobel算子求边界 2·试举几个图像处理应用的例子 图像处理的应用包括:压缩、编码、传输、存储、显示和识别等方面3·试查阅OpenCV库函数,利用Sobel算子求图像边界 #include "cv.h" #include "highgui.h" #include "stdio.h" #include "stdlib.h" int main(int argc, char ** argv) { IplImage * src, *dst ; src = cvLoadImage("c:\\lena.jpg"); dst = cvCreateImage(cvGetSize(src),IPL_DEPTH_16S,3) ; cvNamedWindow("src",0) ; cvShowImage("src",src); cvNamedWindow("sobel",0) ; cvSobel(src,dst,0,1,5); //利用Sobel算子求边界 cvShowImage("sobel",dst); cvWaitKey(0) ; cvReleaseImage(&src) ; cvReleaseImage(&dst); return 0; } 得到的边界如下:

基于某OpenCV与深度学习框架的物体图像识别

基于OpenCV与深度学习框架Caffe的物体图像识别 摘要:本文主要介绍深度神经网络中的卷积神经的相关理论与技术。研究采用OpenCV深度学习模块DNN与深度学习框架Caffe进行物体识别。采用OpenCV 中的DNN模块加载深度学习框架Caffe模型文件,对物体图像进行识别。实验结果表明,卷积神经网络在物体的识别方面具有较高的准确率。 一.概述 1.1 OpenCV简介 OpenCV于1999年由Intel建立,如今由Willow Garage提供支持。OpenCV 是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列C 函数和少量C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。其最新版本是3.2,于2016年12月23日发布。OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。在其最新版3.2版本中,已经添加了深度神经网络模块,并支持深度学习框架Caffe模型(Caffe framework models)。 1.2 深度学习框架Caffe简介 Caffe(Convolutional Architecture for Fast Feature Embedding)是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的贾扬清,曾在Google 工作,现任Facebook研究科学家。Caffe是纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口;可以在CPU和GPU直接无缝切换。Caffe的优势

OpenCV 编程简介教程(中文版),Image Processing, C

Open Source Computer Vision Library intro.html#SECTION00040000000000000000 https://www.360docs.net/doc/c214274003.html,/chenyusiyuan/archive/2010/01/26/5259060.aspx

2.2 2、输入处理 2.2.1 (1)处理鼠标事件: 2.2.2 (2)处理键盘事件: 2.2.3 (3)处理滑动条事件: 3 三、OpenCV的基本数据结构 3.1 1、图像数据结构 3.1.1 (1) IPL 图像: 3.2 2、矩阵与向量 3.2.1 (1)矩阵: 3.2.2 (2)一般矩阵: 3.2.3 (3)标量: 3.3 3、其它结构类型 3.3.1 (1)点: 3.3.2 (2)矩形框大小(以像素为精度): 3.3.3 (3)矩形框的偏置和大小: 4 四、图像处理 4.1 1、图像的内存分配与释放 4.1.1 (1)分配内存给一幅新图像: 4.1.2 (2)释放图像: 4.1.3 (3)复制图像: 4.1.4 (4)设置/获取感兴趣区域ROI: 4.1.5 (5)设置/获取感兴趣通道COI: 4.2 2、图像读写 4.2.1 (1)从文件中读入图像: 4.2.2 (2)保存图像: 4.3 3、访问图像像素 4.3.1 (1)假设你要访问第k通道、第i行、第j列的像素。 4.3.2 (2)间接访问: (通用,但效率低,可访问任意格式的图像) 4.3.3 (3)直接访问: (效率高,但容易出错) 4.3.4 (4)基于指针的直接访问: (简单高效) 4.3.5 (5)基于 c++ wrapper 的直接访问: (更简单高效) 4.4 4、图像转换 4.4.1 (1)字节型图像的灰度-彩色转换: 4.4.2 (2)彩色图像->灰度图像: 4.4.3 (3)不同彩色空间之间的转换: 4.5 5、绘图指令 4.5.1 (1)绘制矩形: 4.5.2 (2)绘制圆形: 4.5.3 (3)绘制线段: 4.5.4 (4)绘制一组线段: 4.5.5 (5)绘制一组填充颜色的多边形: 4.5.6 (6)文本标注: 5 五、矩阵处理 5.1 1、矩阵的内存分配与释放 5.1.1 (1)总体上: 5.1.2 (2)为新矩阵分配内存: 5.1.3 (3)释放矩阵内存: 5.1.4 (4)复制矩阵: 5.1.5 (5)初始化矩阵: 5.1.6 (6)初始化矩阵为单位矩阵: 5.2 2、访问矩阵元素 5.2.1 (1)假设需要访问一个2D浮点型矩阵的第(i, j)个单元. 5.2.2 (2)间接访问: 5.2.3 (3)直接访问(假设矩阵数据按4字节行对齐): 5.2.4 (4)直接访问(当数据的行对齐可能存在间隙时 possible alignment gaps): 5.2.5 (5)对于初始化后的矩阵进行直接访问: 5.3 3、矩阵/向量运算

OpenCV VS架构-算法及应用

OpenCV VS架构\算法及应用 摘要:intel opencv vs是opencv内嵌的一个高效、通用的视频目标检测、跟踪和轨迹分析的开源平台,但由于没有相关资料而缺少研究和应用。在深入挖掘opencv vs源码的基础上,剖析了该平台的整体架构和算法体系,给出了算法描述和相应接口。在此基础上,开发了一个基于opencv vs架构的稳定、高效的行人统计系统。关键词:opencv;视频监控;视频跟踪;轨迹分析;行人统计 引言 多年来在从事计算机视觉研究的过程中,一直需要这样一个平台,一方面可以提供众多成熟稳定的检测、跟踪、轨迹分析算法,另一方面具备良好的编程接口,这样就可以将自己的算法很方便地嫁接进这个系统,测试和对比各种算法的优劣性能。而intel opencv [1]视频监控(video surveillance)模块恰恰提供了这样一个功能强大的平台,在下文中简称为vs。从intel opencv 1.0版本开始,其辅助库cvaux中就增加了vs模块,直至opencv 2.2版本,该模块都相对稳定的存在。然而opencv提供的vs的相关资料相当少,在官方的帮助文档中甚至只字未提,国内外也少有相关的研究和介绍,这也是vs长期未被研发人员广泛关注的原因之一。值得庆幸的,也是opencv最大的优势就在于其开源性。通过深入剖析vs的源代码,可以理清整个vs框架的脉络,探索其中的算法原理

和实现方法。本文对vs的架构和算法体系进行了剖析和梳理,在此基础上给出一个该架构应用于行人统计的实例。 1opencv video surveillance的架构 opencv是intel公司开发的广受关注的计算机视觉开源库,其算法覆盖面广、实时性好。cvaux是opencv的辅助类库,vs则是其中一个重要组成部分。用vc++6.0打开opencv 1.0工程源码,可以在cvaux下看到vs结构和类定义,vs类多数以cvblob开头。通过梳理vs的各个类和结构间的关系,可以归纳得到vs的uml关系图,从整体上把握vs的架构,如图1所示。类似于ms mfc中的cobject,vs中的所有的类都有一个共同的父类cvvsmodule,主要提供各个模块通用的参数的读写、拷贝等功能。vs提供了目标检测、跟踪和轨迹分析的算法接口:cvfgdetector,cvblobdetector ,cvblobtracker,cvblobtrackgen,cvblobtrackpostproc,cvblobtrackanalysis,分别是前景检测、新目标检测、目标跟踪、轨迹生成、跟踪后处理、轨迹分析等6组算法接口,这些接口类是大多数vs类的父类。另外还有一个cvblobtrackerauto接口,其功能是对以上算法进行链接、调度,用于对整个算法流程和数据传递的控制。 vs中的很多类并没有导出用户接口,不能直接调用,而是提供了相应的全局函数作为惟一的用户接口。这是模式设计中类工厂的思想,有效地屏蔽了构建类实例的细节,这种设计思想被大量应用于

OpenCV 例程使用手册

OpenCV例程使用手册 目录 1 OpenCV说明 (2) 2 OpenCV模块测试 (3) 3 TI官方综合例程 (5) 3.1例程说明 (6) 3.2编译例程 (6) 3.3运行 (6) 4 Sobel边缘检测算法 (9) 5 Canny边缘检测算法 (11) 6 VideoCapture图像采集 (12) 更多帮助.................................................................................................... 错误!未定义书签。 公司官网:https://www.360docs.net/doc/c214274003.html, 销售邮箱:sales@https://www.360docs.net/doc/c214274003.html, 公司总机:020-8998-6280 1/13技术论坛:https://www.360docs.net/doc/c214274003.html, 技术邮箱:support@https://www.360docs.net/doc/c214274003.html, 技术热线:020-3893-9734

1 OpenCV说明 OpenCV的全称是:Open Source Computer Vision Library,开源计算机视觉。OpenCV 是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列C函数和少量C++构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 TI AM57x系列处理器支持的OpenCV模块有以下14个: core module imgproc module calib3d module features2d module objdetect module photo module video module flann module imgcodecs module ml module shape module stiching module superres module videoio module OpenCV库的地址: SDK根目录/linux-devkit/sysroots/armv7ahf-neon-linux-gnueabi/usr/lib/ OpenCV头文件路径: SDK根目录/linux-devkit/sysroots/armv7ahf-neon-linux-gnueabi/usr/include/opencv2 TI官方测试说明链接: https://www.360docs.net/doc/c214274003.html,/index.php/OpenCV_AM57_Test_Instructions

相关文档
最新文档