文档库 最新最全的文档下载
当前位置:文档库 › cvPutText opencv中汉字的输出

cvPutText opencv中汉字的输出

cvPutText opencv中汉字的输出
cvPutText opencv中汉字的输出

cvPutText opencv中汉字的输出

OPENCV 不支持汉字输出,但可以修改其代码,支持汉字。字符输出在nitFont、cvPutText、cvGetSize三个函数中,文件在cxcore\src\cxdrawing.cpp

函数介绍:

void cvlnitFont(CvFont*font,int font_face,double hscale,double vscale,double shear,int thickness,int line_type);

/*font表示被初始化的字体结构体。font_face字体名称标识符,目前仅支持CV_FONT_HERSHEY_SIMPLEX等少数几种字体。hscale表示字体宽度的放大系数,例如0.5f表示宽度为原来的一半,shear字体豹裁瘦的斜率,1表示字体倾斜45度。thickness表示字体笔划的粗细程度。line_type表示字体笔划的类型,具体参见cvLine。*/

void cvPutText(CvArr *img,char+text,CvPoint org,CvFont *font,CvScalar color);

/*img表示图像。这里要严格的ASCII字符,不能接受像GB2312等双字节编码。org表示第1个字符左下角的坐标。font表示字体结构体。color表示文本的字体颜色。*/

字符编码:ASCII(一个字节),GB2313(两个字节),Unicode(两个字节).unicode兼容ASCII,不兼容GB,需要ANSI-C语言来转换.

思想如下:

1,解析汉字的编码;2,根据汉字编码装载汉字的形状;3,输出汉字的形状。

1,从char --> wchar_t

2,采用TrueType 字库。利用开源的FreeType库来处理字库。具体如下:

用FreeType的API提取一个字符的过程如下:{

FT_Library m_library;//字库

FT_Face m face;//字体

//打开字库文件,创建一个字体

FT_Init_FreeType(&m_library);

FT_New_Face(m_library,"TrueType.ttf,0,&m_face);

∥根据字符的编码得到字符的索引位置

//根据字符在字库中索引得到字库轮廓

//根据字符的轮廓渲染字符的二值位图

FT_UInt glyph_index=FT_Get_Char_Index(m_face,'中');

FT_Load_Glyph(m_face,glyph_index,FT_LOAD_DEFAULT);

FT_RenderGlyph(m_face->glyph,FT_RENDER_MODE_MONO);

//释放FreeType库管理的资源

FT_Done_Face(m_face);

FT_Done_FreeType(m_library);

}

3, 显示

字型对应的是字型的位图(m_face->glyph->bitmap),直接把字符对应的位图像素绘制到影像中即可。

影像中每个像素的颜色可以通过OpenCV中的cvSet2D函数设置。实现代码如下:

void drawCharaeter(Ipllmage *image,FT_Face *face)

{

//处理Ipllmage影像的origin标志和ROI结构

yphSIot slot=m_face->gly

FT_GlyphSiot slot = m_face->glyph;

int rows=slot->bitmap.rows;

int cols=slot->bitmap.width;

for(int i=0;i

for(intj=o;j

int off=i*slot->bitmap.pitch+j/8;

int flag=slot->bitmap[off]&(0xc0>>(j%8));

cvSet2D(img,i,j,CV_RGB(255,255,255));

}

基于OpenCV识别库的面部图像识别系统的设计

基于OpenCV识别库的面部图像识别系统的设计 本系统采用J2EE技术并以OpenCV开源计算机视觉库技术为基础,实现一套具有身份验证功能的面部图像识别信息管理系统。系统使用MySQL数据库提供数据支撑,依托于J2EE的稳定性和Java平台的可移植性使得本系统可以在各个操作系统平台中运行,同时提供在互联网中使用面部识别技术的一套较为完备的解决方案。 标签:OpenCV;人脸识别;生物学特征 引言 随着信息技术的飞速发展以及互联网的深入普及,越来越多的行业和领域使用信息技术产品以提高工作效率和管理水平。但是由于人们隐私信息的保护意识薄弱,出现了许多信息安全的问题。在人们对于信息安全越来越重视的情况下,许多技术被应用到信息安全领域中来。较为先进的技术有虹膜识别技术、遗传基因识别技术以及指纹识别技术等。而论文采用的是当前热点的面部图像识别技术。 1 系统实现算法及功能分析 1.1 面部图像的生物学特征模型的建立 本系统是利用面部图形的生物学特征来识别不同的人。由于每个人的面部图像都有各自的特征但又具有一定的通性,需要应用生物学中相关知识加以解决。可以利用已有的生物学测量手段以及现有的算法构建人的面部图像生物学特征模型(简称:面部模型),并应用于系统中,面部模型的建立为面部图像识别的功能提供实现依据。 1.2 知识特征库及面部识别引擎的建立 在前述面部模型建立完成后,需要建立相应的知识库以及面部识别引擎方可进行身份的识别。可经过大量数据的采集和分析后建立知识库,并根据知识库的特点建立相应的识别引擎。此识别引擎对外开放,在本系统中提供其它外来程序的调用接口,其它系统能够通过本接口实现识别引擎的调用实现对于面部图形的识别,从而达到识别引擎的可复用性。在技术条件允许的情况下,提供知识库的智能训练以及半自动构建支持。 1.3 面部图像的采集与预处理 本系统中采用了预留API接口,利用USB图形捕获设备采集数据图像。经过USB设备的捕获,使用JMF(Java Media Framework)来处理已捕获的图像数据,对捕获的图像进行面部图行检测和实时定位跟踪。

Opencv文件操作与数据存储

数据存储 OpenCV提供了一种机制来序列化(serialize)和去序列化(de-serialize)其各种数据类型,可以从磁盘中按YAML或XML格式读/写。在第4章中,我们将专门介绍存储和调用常见的对象IplImages的函数(cvSaveImage()和cvLoadImage())。此外,第4章将讨论读/写视频的特有函数:可以从文件或者摄影机中读取数据的函数cvGrabFrame()以及写操作函数cvCreateVideoWriter()和cvWriteFrame()。本小节将侧重于一般对象的永久存储:读/写矩阵、OpenCV结构、配置与日志文件。 首先,我们从有效且简便的OpenCV矩阵的保存和读取功能函数开始。函数是cvSave()和cvLoad()。例3-15展示了如何保存和读取一个5×5的单位矩阵(对角线上是1,其余地方都是0)。 例3-15:存储和读取CvMat 1.CvMat A= cvMat( 5, 5, CV_32F, the_matrix_data ); 2. 3.cvSave( "my_matrix.xml", &A ); 4.. . . 5.// to load it then in some other program use … 6.CvMat* A1= (CvMat*) cvLoad( "my_matrix.xml" ); CxCore参考手册中有整节内容都在讨论数据存储。首先要知道,在OpenCV中,一般的数据存储要先创建一个CvFileStorage结构(如例3-16)所示,该结构将内存对象存储在一个树形结构中。然后通过使用 CV_STORAGE_READ参数的cvOpenFileStorage()从磁盘读取数据,创建填充该结构,也可以通过使用 CV_STORAGE_WRITE的cvOpenFileStorage()创建并打开CvFileStorage写数据,而后使用适当的数据存储函数来填充它。在磁盘上,数据的存储格式为XML或者YAML。 例3-16:CvFileStorage结构,数据通过CxCore数据存储函数访问 1.typedef struct CvFileStorage 2.{ 3.... // hidden fields 4.} CvFileStorage; CvFileStorage树内部的数据是一个层次化的数据集合,包括标量、CxCore对象(矩阵、序列和图)以及用户定义的对象。 假如有一个配置文件或日志文件。配置文件告诉我们视频有多少帧(10),画面大小(320×240)并且将应用一个3×3的色彩转换矩阵。例3-17展示了如何从磁盘中调出cfg.xml文件。 例3-17:往磁盘上写一个配置文件cfg.xml 1.CvFileStorage* fs= cvOpenFileStorage( 2."cfg.xml", 3.0, 4.CV_STORAGE_WRITE 5.); 6.cvWriteInt( fs, "frame_count", 10 ); 7.cvStartWriteStruct( fs, "frame_size", CV_NODE_SEQ ); 8.cvWriteInt( fs, 0, 320 ); 9.cvWriteInt( fs, 0, 200 ); 10.cvEndWriteStruct(fs); 11.cvWrite( fs, "color_cvt_matrix", cmatrix );

树莓派安装opencv

树莓派学习笔记——apt方式安装opencv 0.前言 本文介绍如何在树莓派中通过apt方式安装opencv,并通过一个简单的例子说明如何使用opencv。相比于源代码方式安装opencv,通过apt方式安装过程步骤简单些,消耗的时间也少一些。通过apt方式安装没有自动生成opencv.pc文件,所以在编写makefile文件时不能直接使用pkg-config工具,而需要逐个指定opencv_core、opencv_imgproc 等动态链接库。 【相关博文】 【树莓派学习笔记——源代码方式安装opencv】 更多内容请参考——【树莓派学习笔记——索引博文】 1.安装opencv 开始之前进行必要的更新工作。 sudo apt-get update 安装opencv。 sudo apt-get install libcv-dev 安装过程比较缓慢,请耐心等待。 安装完成之后,opencv相关的头文件被安装到/usr/lib目录中,该目录是linux默认头文件查找路径。opencv的相关动态链接库被安装到/usr/lib目录中。这些动态链接库包括: 【opencv_calib3d】——相机校准和三维重建

【opencv_core】——核心模块,绘图和其他辅助功能 【opencv_features2d】——二维特征检测 【opencv_flann】——快速最邻近搜索 【opencv_highgui】——GUI用户界面 【opencv_imgproc】——图像处理 【opencv_legacy】——废弃部分 【opencv_ml】——机器学习模块 【opencv_objdetect】——目标检测模块 【opencv_ocl】——运用OpenCL加速的计算机视觉组件模块【opencv_video】——视频分析组件 2.简单示例 【C++】——通过代码载入一张图片,通过opencv把彩色图片转换为黑白图片,并把原图和转换后的图片输出到屏幕中。 [cpp]view plaincopy 1.#include 2.#include 3.#include 4.#include https://www.wendangku.net/doc/0c12086395.html,ing namespace cv; https://www.wendangku.net/doc/0c12086395.html,ing namespace std; 7.int main (int argc, char **argv) 8.{ 9. Mat image, image_gray; 10. image = imread(argv[1], CV_LOAD_IMAGE_COLOR ); 11.if (argc != 2 || !image.data) { 12. cout << "No image data\n"; 13.return -1; 14. } 15.

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+VS

配置OpenCV2.4.10 + Visual Studio 2010 一、安装OpenCV 1、双击OpenCV安装包,会提示解压到某个地方,推荐放到D:\Program Files\下,比如安装路径就写:D:\Program Files。 2、等一段时间,OpenCV2.4.10近3个多G的文件就解压到了D:\Program Files 下。其中,build里面是使用OpenCV2.4.10相关的文件,我们如果只是使用OpenCV2.4.10的话呢,就只用管build里面的内容。 二、安装Visual Studio 2010 1、右击Visual Studio 2010的压缩包,解压文件。在解压后的文件中找到autorun 应用程序, 2、点开autorun,弹出一下对话框,点击对话框中的“安装Microsoft Visual Studio

2010”. 3、如图所示下一步: 4、选中我已阅读许可条款,点击下一步

5、根据需要选择功能,安装路径,点击安装 6、几分钟之后,出现如图需要重新启动才能完成安装。大家记得保存好已打开的其他文件再重启。

7、电脑重启之后,安装程序自动出现,耐心等待安装。

8、四十分钟后,安装完成。 9、最后还会跳出这么一个对话框,直接点退出就可以了。到此,软件安装过程全部结束。成功了。打开软件就可以用了。

三、配置OpenCV2.4.10 和 Visual studio 2010 3.1、配置环境变量 3.1.1、【计算机】->【(右键)属性】->【高级系统设置】->【高级(标签)】->【环境变量】->“双击”系统变量中的PATH->在变量值里面添加相应的路径。如图:

基于OpenCv的图像识别

基于2DPCA的人脸识别算法研究 摘要 人脸识别技术是对图像和视频中的人脸进行检测和定位的一门模式识别技术,包含位置、大小、个数和形态等人脸图像的所有信息。由于近年来计算机技术的飞速发展,为人脸识别技术的广泛应用提供了可能,所以图像处理技术被广泛应用了各种领域。该技术具有广阔的前景,如今已有大量的研究人员专注于人脸识别技术的开发。本文的主要工作内容如下: 1)介绍了人脸识别技术的基础知识,包括该技术的应用、背景、研究方向以及 目前研究该技术的困难,并对人脸识别系统的运行过程以及运行平台作了简单的介绍。 2)预处理工作是在原始0RL人脸库上进行的。在图像的预处理阶段,经过了图 象的颜色处理,图像的几何归一化,图像的均衡化和图象的灰度归一化四个过程。所有人脸图像通过上述处理后,就可以在一定程度上减小光照、背景等一些外在因素的不利影响。 3)介绍了目前主流的一些人脸检测算法,本文采用并详细叙述了Adaboost人脸 检测算法。Adaboost算法首先需要创建人脸图像的训练样本,再通过对样本的训练,得到的级联分类器就可以对人脸进行检测。 4)本文介绍了基于PCA算法的人脸特征点提取,并在PCA算法的基础上应用了 改进型的2DPCA算法,对两者的性能进行了对比,得出后者的准确度和实时性均大于前者,最后将Adaboost人脸检测算法和2DPCA算法结合,不仅能大幅度降低识别时间,而且还相互补充,有效的提高了识别率。 关键词:人脸识别 2DPCA 特征提取人脸检测

2DPCA Face Recognition Algorithm Based on The Research Abstract:Face recognition is a technology to detect and locate human face in an image or video streams,Including location, size, shape, number and other information of human face in an image or video streams.Due to the rapid development of computer operation speed makes the image processing technology has been widely applied in many fields in recent years. This paper's work has the following several aspects: 1)Explained the background, research scope and method of face recognition,and introduced the theoretical method of face recognition field in general. 2)The pretreatments work is based on the original ORL face database. In the image preprocessing stage, there are the color of the image processing, image geometric normalization, image equalization and image gray scale normalization four parts. After united processing, the face image is standard, which can eliminate the adverse effects of some external factors. 3)All kinds of face detection algorithm is introduced, and detailed describing the Adaboost algorithm for face detection. Through the Adaboost algorithm to create a training sample,then Training the samples of face image,and obtaining the cascade classifier to detect human face. 4)This paper introduces the facial feature points extraction based on PCA ,and 2DPCA is used on the basis of the PCA as a improved algorithm.Performance is compared between the two, it is concluds that the real time and accuracy of the latter is greater than the former.Finally the Adaboost face detection algorithm and 2DPCA are combined, which not only can greatly reduce the recognition time, but also complement each other, effectively improve the recognition rate. Key words:Face recognition 2DPCA Feature extraction Face detection

opencv编写笔记

建工程步骤省略!!!!!! 1、项目—demo(自己取项目名称)属性---配置属性—VC++目录—包含目录:D:\opencv\opencv\build\include;) 2、配置属性—VC++目录—库目录:D:\opencv\opencv\build\x86\vc10\lib 3、链接器—输入—附加依赖项—添加一下这些(针对Debug调试): opencv_ml2410d.lib opencv_calib3d2410d.lib opencv_contrib2410d.lib opencv_core2410d.lib opencv_features2d2410d.lib

opencv_flann2410d.lib opencv_gpu2410d.lib opencv_highgui2410d.lib opencv_imgproc2410d.lib opencv_legacy2410d.lib opencv_objdetect2410d.lib opencv_ts2410d.lib opencv_video2410d.lib opencv_nonfree2410d.lib opencv_ocl2410d.lib opencv_photo2410d.lib opencv_stitching2410d.lib opencv_superres2410d.lib opencv_videostab2410d.lib ◆按F5运行,若出现这样的情况:无法找到系统文件,缺少…..demo.exe程序。则需 下载tbb41_20130314oss_win.zip ,将其解压后文件夹中包含的bin文件夹, 复制到D:\opencv\opencv\build\common\tbb里;若还不行,可关掉当前文件,重新建立新项目,再进行配置! ◆完成以后,计算机属性---高级系统设置—环境变量---选择path—双击—添加路径: D:\opencv\opencv\build\x86\vc10\bin;D:\opencv\opencv\build\common\tbb\ia32\vc 10

OPENCV函数

Opencv函数 分配图像空间: IplImage*cvCreateImage(CvSize size,int depth,int channels); size:cvSize(width,height); depth:IPL_DEPTH_8U,IPL_DEPTH_8S,IPL_DEPTH_16U, IPL_DEPTH_16S,IPL_DEPTH_32S,IPL_DEPTH_32F, IPL_DEPTH_64F channels:1,2,3or4. 注意数据为交叉存取.彩色图像的数据编排为b0g0r0b1g1 r1... 举例: //分配一个单通道字节图像 IplImage*img1=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1); //分配一个三通道浮点图像 IplImage*img2=cvCreateImage(cvSize(640,480),IPL_DEPTH_32F,3); 释放图像空间: IplImage*img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1); cvReleaseImage(&img); 复制图像: IplImage*img1=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1); IplImage*img2; img2=cvCloneImage(img1); 设定/获取兴趣区域: void cvSetImageROI(IplImage*image,CvRect rect); void cvResetImageROI(IplImage*image); vRect cvGetImageROI(const IplImage*image); 大部分OpenCV函数都支持ROI. 设定/获取兴趣通道: void cvSetImageCOI(IplImage*image,int coi);//0=all int cvGetImageCOI(const IplImage*image); 大部分OpenCV函数暂不支持COI.

VS2013 中OpenCV2410 的配置及其他

1 2

Include Directories: C:\opencv\build\include Library Directories: C:\opencv\build\x86\vc12\lib 3 opencv_calib3d2410d.lib opencv_contrib2410d.lib opencv_core2410d.lib opencv_features2d2410d.lib opencv_flann2410d.lib opencv_gpu2410d.lib

opencv_imgproc2410d.lib opencv_legacy2410d.lib opencv_ml2410d.lib opencv_nonfree2410d.lib opencv_objdetect2410d.lib opencv_ocl2410d.lib opencv_photo2410d.lib opencv_stitching2410d.lib opencv_superres2410d.lib opencv_ts2410d.lib opencv_video2410d.lib opencv_videostab2410d.lib opencv_calib3d2410.lib opencv_contrib2410.lib opencv_core2410.lib opencv_features2d2410.lib opencv_flann2410.lib opencv_gpu2410.lib opencv_highgui2410.lib opencv_imgproc2410.lib opencv_legacy2410.lib opencv_ml2410.lib opencv_nonfree2410.lib opencv_objdetect2410.lib opencv_ocl2410.lib opencv_photo2410.lib

基于opencv对图像的预处理

基于opencv 对图像的预处理 1.问题描述 本次设计是基于opencv 结合c++语言实现的对图像的预处理,opencv 是用于开发实时的图像处理、计算机视觉及模式识别程序;其中图像的预处理也就是利用opencv 对图像进行简单的编辑操作;例如对图像的对比度、亮度、饱和度进行调节,同时还可以对图像进行缩放和旋转,这些都是图像预处理简单的处理方法;首先通过opencv 加载一幅原型图像,显示出来;设置五个滑动控制按钮,当拖动按钮时,对比度、亮度、饱和度的大小也会随之改变,也可以通过同样的方式调节缩放的比例和旋转的角度,来控制图像,对图像进行处理,显示出符合调节要求的图像,进行对比观察他们的之间的变化。 2.模块划分 此次设计的模块分为五个模块,滑动控制模块、对比度和亮度调节模块、饱和度调节模块、缩放调节模块、旋转调节模块,他们之间的关系如下所示: 图一、各个模块关系图 调用 调用 调用 调用 滑动控制模块 对比度和亮度调节模块 饱和度调节模块 缩放调节模块 旋转调节模块

滑动控制模块处于主函数之中,是整个设计的核心部分,通过createTrackbar创建五个滑动控制按钮并且调用每个模块实现对图像相应的调节。 3.算法设计 (1)滑动控制: 滑动控制是整个设计的核心部分,通过创建滑动控制按钮调节大小来改变相应的数据,进行调用函数实现对图像的编辑,滑动控制是利用createTrackbar(),函数中包括了滑动控制的名称,滑动控制显示在什么窗口上,滑动变量的地址和它调节的最大围,以及每个控制按钮应该调用什么函数实现什么功能; (2)对比度和亮度的调节: 对比度和亮度的调节的原理是依照线性理论,它的公式如下所示:g(x)=a* f(x) +b,其中f(x)表示源图像的像素,g(x)表示输出图像的像素,参数a(需要满足a>0)被称为增益(gain),常常被用来控制图像的对比度,参数b通常被称为偏置(bias),常常被用来控制图像的亮度; (3)饱和度的调节: 饱和度调节利用cvCvtColor( src_image, dst_image, CV_BGR2HSV )将RGB 颜色空间转换为HSV颜色空间,其中“H=Hue”表示色调,“S=Saturation”表示饱和度,“V=Value ”表示纯度;所以饱和度的调节只需要调节S的大小,H 和V的值不需要做任何的改变; (4)旋转的调节: 旋转是以某参考点为圆心,将图像的个点(x,y)围绕圆心转动一个逆时针角度θ,变为新的坐标(x1,y1),x1=rcos(α+θ),y1=rsin(α+θ),其中r是图像的极径,α是图像与水平的坐标的角度的大小; (5)缩放的调节: 首先得到源图像的宽度x和高度y,变换后新的图像的宽度和高度分别为x1和y1,x1=x*f,y1=y*f,其中f是缩放因子; 4.函数功能描述 (1)主函数main()用来设置滑动控制按钮,当鼠标拖动按钮可以得到相应的数据大小,实现手动控制的功能,当鼠标拖动对比度和亮度调节是,主函数调用

OPenCV3.2中Mat对象常用函数属性总结

OPenCV3.2中Mat对象常用函数属性总结Mat对象是OpenCV2.0之后引进的图像数据结构,它能自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分,头部与数据部分。 在使用Mat对象时,有以下四个要点需要注意: 1、输出图像的内存是自动分配的 2、使用OpenCV的C++接口,不需要考虑内存分配问题 3、赋值操作和拷贝构造函数只会复制头部分 4、使用clone与copyTo两个函数实现数据完全复制 下面我们就具体介绍一下公共成员函数和公共属性。 公共成员函数: 1、cv::Mat::Mat ( int rows, int cols, int type ) 参数: rows2D数组中的行数 cols2D数组中的列数。 type数组类型。使用CV_8UC1,…,CV_64FC4创建1 - 4通道矩阵,或CV_8UC(n),…,CV_64FC(n)创建多通道(向上到CV_CN_MAX通道)矩阵。

2、cv::Mat::Mat ( Size size, int type ) 参数: size 2D数组大小:Size(cols, rows)。在Size()构造函数中,行数和列数以相反的顺序排列。 type 数组类型。使用CV_8UC1,…,CV_64FC4创建1 - 4通道矩阵,或CV_8UC(n),…,CV_64FC(n)创建多通道(向上到CV_CN_MAX通道)矩阵。 3、cv::Mat::Mat ( int rows, int cols, int type, const Scalar & s ) 参数: rows2D数组中的行数。 cols 2D数组中的列数。 type数组类型。使用CV_8UC1,…,CV_64FC4创建1 - 4通道矩阵,或CV_8UC(n),…,CV_64FC(n)创建多通道(向上到CV_CN_MAX通道)矩阵。s 初始化每个矩阵元素的可选值。在构建后将所有矩阵元素设置为特定值, 使用赋值运算符Mat::operator=(const Scalar& value) 。 4、cv::Mat::Mat ( Size size, int type,

Visual Studio2012环境下配置OpenCV_v2.4.10的步骤

Visual Studio2012环境下配置OpenCV的步骤 2014/12/16 本文将针对Visual Studio2012环境下如何配置OpenCV做出说明,具体如下。 1.下载和安装OpenCV SDK 1.1资源下载 在OpenCV官网https://www.wendangku.net/doc/0c12086395.html, SDK安装包。对应自己的操作系统,可以下载Windows,Linux/Mac和ios版本。目前官网已经给出OpenCV v3.0bata版本。本文中以OpenCV v2.4.10版本为例进行安装。(各个版本安装过程大体相同,后面将针对不同之处给出说明) 1.2资源安装 下载的OpenCV SDK的后缀名为exe,是一个解压安装程序。双击后会提示设置解压路径,推荐路径D:\Program Files。(因为OpenCV项目文件打包的时候,根目录就是opencv,所以我们不需要额外的新建一个名为opencv的文件夹然后再解压,那是多此一举的事情)然后点击Extract按钮,进行安装。 2.环境变量和路径设置 打开计算机→属性→高级系统设置,在高级目录下单击环境变量按钮,打开环境变量设置对话框。

2.1用户变量设置 在用户变量(此处为lbs的用户变量中)添加两个变量。 新建opencv变量,变量值设置为D:\Program Files\opencv\build。 新建path变量,变量值设置为D:\Program Files\opencv\build\x86\vc11\bin。此处如果已存在path变量,仅需对其变量值修改就行,在后面加上上述路径,但需要用分号和前面的路径隔开(英文半角下的分号) 2.2系统变量设置 在原有的path变量中对变量值修改,在变量值的最后加上D:\Program Files\opencv\build\x86\vc11\bin路径,注意要使用英文半角下的分号和前面的路径隔开。 ※说明 (1)不论电脑是32位还是64位,上述路径中均以x86路径输入,因为创建的程序中默认是在使用win32编译器进行编译。 (2)路径修改后需要重启电脑才能生效。 3.工程项目属性设置 工程项目属性配置主要是指对Debug和Release环境下的工程属性进行修改(通过修改https://www.wendangku.net/doc/0c12086395.html,er文件进行)。查阅相关资料,发现Visual Studio 2012中已经不再区分Debug和Release的https://www.wendangku.net/doc/0c12086395.html,er文件,所以配置了Debug或Release中的任

OPENCV_Mat类存取方法(元素访问)

Opencv ----Mat类 ?cv::Mat ?depth/dims/channels/step/data/elemSize Mat矩阵中数据元素的地址计算公式: addr(M i0,i1,…i m-1) = M.data + M.step[0] * i0 + M.step[1] * i1+ … + M.step[m-1] * i m-1。其中m = M.dims 是指M的维度 i.data:Mat对象中的一个指针,指向内存中存放矩阵数据的一块内存(uchar* data). ii.row: 行;col:列;rows:行数;cols:列数。 iii.dims :Mat所代表的矩阵的维度,如3 * 4 的矩阵为2 维,3 * 4 * 5 的为3维. iv.channels:通道,矩阵中的每一个矩阵元素拥有的值的个数,比如说3 * 4 矩阵中一共12 个元素,如果每个元素有三个值,那么就说这个矩阵是3 通道的,即channels = 3。常见的是一张彩色图片有红、绿、蓝三个通道。但是opencv用imread(opencv读图的函数)读进来的图像,三通道存放顺序为B、 G、R。 v.depth:深度,即每一个像素的位数(bits),在opencv的Mat.depth()中得到的是一个0 –6 的数字,分别代表不同的位数:enum { CV_8U=0, CV_8S=1, CV_16U=2, CV_16S=3, CV_32S=4, CV_32F=5, CV_64F=6 };可见0和1都代表8位,2和3都代表16位,4和5代表32位,6代表64位; vi.step:是一个数组,定义了矩阵的布局,具体见下面图片分析,另外注意step1

opencvVS使用说明

1.打开opencv2.4.9.exe,指定安装位置(文件解压位置),解压后包含两个文件夹build、source,build文件夹中包含静态链接库文件和动态链接库文件,source文件夹包含opencv函数的源码以及训练好的分类器以及训练好的分类器。 (1)提取build文件夹下include文件夹备用(第12步使用); (2)提取build/x86/vc10目录下的bin文件夹、lib文件夹备用。(说明:x86文件夹中链接库文件是VS默认win32平台 下32位编译器,如果设置VS编译平台为64位则需要x64 文件夹的链接库;vc10文件夹的链接库对应VS2010开发平 台,vc11未知,vc12对应VS2012及以上的开发平台) 图1 opencv解压得到的两个文件夹图2 build文件夹include 图3 build/x86/vc10文件夹下bin、lib分别存放动态静态链接库文件

图4 source文件夹中data文件夹中的haarlike级联分类器、hog分类器、lbp分类器,主要对人脸、五官、微笑、行人等做分类检测 2.打开VS,新建一个Win32控制台应用程序 3.点击下一步然后去掉预编译头,选择空项目

4.点击完成,找到解决方案管理器,右键工程名

5.配置属性->VC++目录 6.在可执行文件目录编辑输入../bin 然后点击确定

7.在包含目录分别输入../include ../include/opencv ../inclide/opencv2 然后点击确定 8.在库目录输入../lib 然后点击确定

opencv矩阵操作学习资料

o p e n c v矩阵操作

通用矩阵乘法 void cvGEMM( const CvArr* src1, const CvArr* src2, double alpha, const CvArr* src3, double beta, CvArr* dst, int tABC=0 ); #define cvMatMulAdd( src1, src2, src3, dst ) cvGEMM( src1, src2, 1, src3, 1, dst, 0 ) #define cvMatMul( src1, src2, dst ) cvMatMulAdd( src1, src2, 0, dst ) src1 第一输入数组 src2 第二输入数组 src3 第三输入数组 (偏移量),如果没有偏移量,可以为空( NULL)。 dst 输出数组 tABC T操作标志,可以是 0 或者下面列举的值的组合: CV_GEMM_A_T - 转置 src1 CV_GEMM_B_T - 转置 src2 CV_GEMM_C_T - 转置 src3 例如, CV_GEMM_A_T+CV_GEMM_C_T 对应 alpha*src1T*src2 + beta*src3T 函数 cvGEMM 执行通用矩阵乘法: dst = alpha*op(src1)*op(src2) + beta*op(src3), 这里 op(X) 是 X 或者 XT

所有的矩阵应该有相同的数据类型和协调的矩阵大小。支持实数浮点矩阵或者 复数浮点矩阵。 [编辑] Transform 对数组每一个元素执行矩阵变换 void cvTransform( const CvArr* src, CvArr* dst, const CvMat* transmat, const CvMat* shiftvec=NULL ); src 输入数组 dst 输出数组 transmat 变换矩阵 shiftvec 可选偏移向量 函数 cvTransform 对数组 src 每一个元素执行矩阵变换并将结果存储到 dst: dst(I)=transmat*src(I) + shiftvec 或者 dst(I)k=sumj(transmat(k,j)*src(I)j) + shiftvec(k) N-通道数组 src 的每一个元素都被视为一个N元向量,使用一个M×N 的变换矩阵 transmat 和偏移向量 shiftvec 把它变换到一个 M-通道的数组 dst 的 一个元素中。这里可以选择将偏移向量 shiftvec 嵌入到 transmat 中。这样

OpenCV 说明介绍

OpenCV3.0 Overview Gary Bradski Chief Scientist, Perception and AI at Magic Leap CEO, https://www.wendangku.net/doc/0c12086395.html, Vadim Pisarevsky Principal Engineer, Itseez Grace Vesom Senior Engineer in 3D at Magic Leap Vincent Rabaud Perception Team Manager at Aldebaran Robotics

OpenCV at glance ?BSD license, 10M downloads, 500K+lines of code ?Huge community involvement, automated patch testing and integration process ?Runs everywhere Bindings: Python, Samples, Apps, SSE, NEON, IPP, OpenCL, CUDA, OpenCV4Tegra, … core, imgproc, objdetect … OpenCV HAL OpenCV face, text, rgbd, … OpenCV Contrib Java Solutions ?Find more at https://www.wendangku.net/doc/0c12086395.html,(user) ?Or https://www.wendangku.net/doc/0c12086395.html,(developer)

Recent Stats > 10M downloads NOTE: This is only for source forge. Many more downloads come from Git and many more come on Unix distros. ~200K downloads/month World wide Rated highly

最新基于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的优势

相关文档