0)11.{" />

opencv一次读取多张图片

opencv一次读取多张图片
opencv一次读取多张图片

1.#define IMAGE_LIST_FILE "inputimage.txt"

2.int main()

3.{

4.FILE *fp;

5.char imagepath[200];

6.

7./* IMAGE_LIST_FILE 存放图像的名字*/

8. fp=fopen(IMAGE_LIST_FILE,"r");

9.while(!feof(fp))

10.while(fscanf(fp, "%s ", imagepath) > 0)

11. {

12.//读取图片

13. Mat img=imread(imagepath);

14. imshow("ii",img);

15. waitKey(3000); //每隔三秒显示

16.

17. }

18.

19.return 0;

20.}

这个比较适合图片非常多的情况,比如50张。

三张的不用这么麻烦。

char filename[100];

char windowname[100];

IplImage* pScr;

unsigned char *Readfigsmethod1(int num)// 读入num个图片

{

for(int i=1;i<=num;i++)

{

sprintf(filename,"D:/test/%d.jpg",i);// 将图片以数字命名:例如1.jpg 2.jpg等,放入D:/test/文件夹下

sprintf(windowname,"window%d.jpg",i);

pScr=cvLoadImage(filename,1);//导入图片

cvNamedWindow(windowname,CV_WINDOW_AUTOSIZE);

cvShowImage(windowname,pScr);//显示图片

//cvWaitKey(0);

}

cvWaitKey(0);

cvReleaseImage(&pScr);//释放图片

cvDestroyAllWindows();//销毁窗口

return 0;

}

注释:连续读取图片主要问题在于filename指向图片目录,

sprintf(filename,"D:/test/%d.jpg",i)的使用可以使得filename可以从1.jpg,2.jpg,一直到num.jpg. filename=D:/test/i.jpg.

OPENCV静态编译与动态编译

一、序言 当一个opencv工程实现之后,我们会面临一个问题,怎么把opencv程序的exe在其他电脑上运行,这个问题已经有很多人遇到过,当然也有很多人给出了博客,介绍了具体的解决方法,具体自己操作时,还是遇到了这样或者那样的小毛病,不过凭借自己根据错误提示解决问题的能力,最后还是把静态编译给编译成功了。 本文介绍两种opencv程序移植到其他电脑运行的方法,一种是动态编译,需要拷贝程序运行需要的dll,也就是-个exe跟着多个dll的模式,这种简单粗暴,但是显得拖拖拉拉,一个程序还得跟着那么多其他文件,所以我们很不推荐。另外一种就是本文主要介绍的静态编译,和之前运行不一样,我们在这使用的不是opencv的lib库,而是staticlib,编译成功之后,程序只需要拷贝一个exe,就可以在其他电脑上运行。 另外介绍一下本文测试程序工作的程序配置 操作系统Win7 IDE VS2010 opencv版本opencv2.4.5 二、动态编译 为了做一个全面的总结,在这简单的介绍opencv动态编译的方法。 opencv动态编译需要两部分dll: (1)opencv库的dll,检查你所引用的h文件,把对应的dll,拷贝过来就行,注意debug和release的不同,当然一般程序发布的话都会用release版本的,因为release版本比debug版本要快10倍有余。 (2)考虑到目标终端有可能没有装vs,所以需要拷贝msvcp110.dll和msvcr110.dll(release下),dll在C:/Windows/System32下。 三、静态编译 静态编译主要的不同就是利用的是 H:/Opencv2.4.5/opencv/build/x86/vc11/staticlib文件下的lib,而非 H:/Opencv2.4.5/opencv/build/x86/vc11/lib文件夹。具体配置如下: 1.新建空项目,项目名称Static_Opencv

基于Opencv的人脸检测源程序(附详细使用说明)

基于Opencv的人脸检测程序 我的电脑上是用visual studio 2015,配置opencv2.4.9,visuanl studio加载opencv的方法百度上可以找到很多,按照要求配置好后以后进行一下操作: 第一步:新建win32应用程序的工程,在该工程以下程序复杂被覆盖win32的几行程序, #include"stdafx.h" #include"opencv2/objdetect.hpp" #include"opencv2/videoio.hpp" #include"opencv2/highgui.hpp" #include"opencv2/imgproc.hpp" #include #include using namespace std; using namespace cv; /** Function Headers */ void detectAndDisplay(Mat frame); /** Global variables */ String face_cascade_name = "haarcascade_frontalface_alt.xml"; String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml"; CascadeClassifier face_cascade; CascadeClassifier eyes_cascade; String window_name = "Capture - Face detection"; /** @function main */ int main(void) { VideoCapture capture; Mat frame; //-- 1. Load the cascades if (!face_cascade.load(face_cascade_name)) { printf("--(!)Error loading face cascade\n"); return -1; }; if (!eyes_cascade.load(eyes_cascade_name)) { printf("--(!)Error loading eyes cascade\n"); return -1; }; //-- 2. Read the video stream capture.open(-1); if (!capture.isOpened()) { printf("--(!)Error opening video capture\n"); return -1; }

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/cb11557878.html,/technology/computing/opencv/?软件下载: https://www.360docs.net/doc/cb11557878.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

linux下第一个OpencV程序

linux下第一个OpencV程序 今天在linux下安装了OpenCV,下面是我的linux下第一个OpencV程序,很简单,但是在编译的过程中还是遇到了不少的问题。下面就简单总结一下。 源代码如下(hello.c): #include "cv.h" #include "highgui.h" int main(int argc,char **argv) { IplImage* pImage; if (argc == 2 && (pImage=cvLoadImage(argv[1],1)) !=0) { cvNamedWindow("Image",1); cvShowImage("Image",pImage); cvWaitKey(0); cvDestroyWindow("Image"); cvReleaseImage(&pImage); return 0; } return -1; } 1.编译:gcc hello.c -o hello 报错如下: hello.c:1:16: 错误:cv.h:没有该文件或目录 hello.c:2:21: 错误:highgui.h:没有该文件或目录 hello.c: 在函数‘main’ 中: hello.c:6: 错误:‘IplImage’ 未声明(在此函数内第一次使用)

hello.c:6: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其 hello.c:6: 错误:所在的函数内只报告一次。) hello.c:6: 错误:‘pImage’ 未声明(在此函数内第一次使用) hello.c:20:2: 警告:文件未以空白行结束 解决方法: 把目录/usr/local/include/opencv拷贝到/usr/include下, 即执行命令:sudo cp -r /usr/local/include/opencv /usr/include 再编译:gcc hello.c -o hello 仍然报错: hello.c:1:16: 错误:cv.h:没有该文件或目录 hello.c:2:21: 错误:highgui.h:没有该文件或目录 hello.c: 在函数‘main’ 中: hello.c:6: 错误:‘IplImage’ 未声明(在此函数内第一次使用) hello.c:6: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其 hello.c:6: 错误:所在的函数内只报告一次。) hello.c:6: 错误:‘pImage’ 未声明(在此函数内第一次使用) hello.c:20:2: 警告:文件未以空白行结束 再改变编译命令: g++ `pkg-config --cflags opencv` -c hello.c 链接命令: g++ `pkg-config --libs opencv` -o hello hello.o 此时编译成功,执行时候,需要进入超级用户模式下,并进入工程目录,执行命令:hello v.jpg即可显示出图片v.jpg 虽然有看到图片但是其中的有些原理还不是很清楚,会进一步跟踪研究~~~

基于opencv的人脸识别程序-代码详解

#include "cv.h" #include "highgui.h" #include #ifdef _EiC #define WIN32 #endif static CvMemStorage* storage = 0; static CvHaarClassifierCascade* cascade = 0; void detect_and_draw( IplImage* image ); const char* cascade_name = "haarcascade_frontalface_alt.xml";//人脸检测分类器 int main( int argc, char** argv ) { CvCapture* capture = 0; IplImage *frame, *frame_copy = 0; int optlen = strlen("--cascade="); const char* input_name; if( argc > 1 && strncmp( argv[1], "--cascade=", optlen ) == 0 ) { cascade_name = argv[1] + optlen; input_name = argc > 2 ? argv[2] : 0; } else { cascade_name = "E:\毕业设计\智能机器人动态人脸识别系统\陈建州程序.xml";//分类器路径 input_name = argc > 1 ? argv[1] : 0; } cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 ); if( !cascade )//如果没有找到分类器,输出以下 { fprintf( stderr, "ERROR: Could not load classifier cascade\n" ); fprintf( stderr, "Usage: facedetect --cascade=\"\" [filename|camera_index]\n" ); return -1;

opencv编译与安装

2012/3/6, 16:55:01 在fedora15的环境下编译与安装opencv,并测试人脸检测程序 第一步:由于opencv是在cmake工具下建立的工程,所以我们先要下载cmake,下载地址随便一搜都有,不多说。下载到home的主目录下,这里我们是/home/lg。看下面的命令: #cd /home/lg #tar xzvf CMake2.4.7.tar.gz . #cd CMake2.4.7 #./boostrap #gmake #make install 这样cmake工具安装好了,并且可以直接使用cmake命令 根据cmake的编译规律,我们选择外部编译。 下载Opencv2.3.0到/home/lg 解压后进入Opencv2.3.0的目录下(这里的opencv与以前版本1.0的不一样,没有configure文件,所以我们执行不了./configure命令): #mkdir build #cd build #cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON ..(这条命令解析可以参考cmake教程,但是记住这里的第二个选项,我们将opencv安装在/usr/local目录下的) #make #make install 到这opencv编译完成,接下去是是opencv这个工具能正常使用。 记住这里的做法前一种对fedora有用,也就是说在fedora的环境下只能使用这种做法,但是ubuntu却可以使用两种方法。顺便说一下,经常遇见apt-get命令,这是在ubuntu下使用获取软件包的命令,fedora使用的是yum,记住了,否则经常出现使用apt-get却获取不了软件包的情况。 方法1:在/etc/ld.so.conf.d下新建一个文件opencv.conf,里面输入/usr/local/lib 方法2:在/etc/ld.so.conf文件中加入/usr/local/lib这一行 然后执行 #ldconfig(root权限下) #cp /usr/local/lib/pkconfig/opencv.pc /usr/lib/pkgconfig (或者是输入这个命令 export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH)(pkconfig的用法见以前的博文) 至此opencv安装完成 我们可以找个例子来做实验 #cd /home/lg/Opencv2.3.0 #cd samples/cpp #g++ `pkconfig --cflags --libs opencv` drawing.cpp -o drawing(记住前面的两个引号是通过ESC下面的那个波浪符键获得 页次: 1

图像处理经典算法及OpenCV程序

基于opencv的use摄像头视频采集程序 (1) 基于opencv的两个摄像头数据采集 (3) 能激发你用代码做视频的冲动程序 (6) 图像反转(就是把黑的变白,白的变黑) (11) 图像格式的转换 (12) 从摄像头或者A VI文件中得到视频流,对视频流进行边缘检测 (13) 采用Canny算子进行边缘检测 (15) 角点检测 (18) 图像的旋转加缩放(效果很拽,用地球做就像谷歌地球似的) (21) Log-Polar极坐标变换 (22) 对图像进行形态学操作(图像的开闭,腐蚀和膨胀运算) (24) 用不同的核进行图像的二维滤波 (27) 图像域的填充 (30) 寻找轮廓实现视频流的运动目标检测(超推荐一下) (35) 采用金字塔方法进行图像分割 (40) 图像的亮度变换 (43) 单通道图像的直方图 (46) 计算和显示彩色图像的二维色调-饱和度图像 (48) 图像的直方图均匀化 (50) 用Hongh变换检测线段 (52) 利用Hough变换检测圆(是圆不是椭圆) (57) 距离变换 (59) 椭圆曲线拟合 (64) 由点集序列或数组创建凸外形 (68) Delaunay三角形和V oronoi划分的迭代式构造 (71) 利用背景建模检测运动物体(推荐) (78) 运动模板检测(摄像头) (81) 显示如何利用Camshift算法进行彩色目标的跟踪 (86) 基于opencv的use摄像头视频采集程序 准备工作:你得把opencv库装到电脑上,并把各种头文件,源文件,lib库都连到vc上,然后设置一下系统环境变量,这里这方面就不说了,好像我前面的文章有说过,不懂也可百度一下。 建立一个基于WIN32控制台的工程CameraUSB,在新建一个c++元文件,写代码: #include "cxcore.h" #include "cvcam.h" #include "windows.h" #include "highgui.h"

OPENCV ADABOOST人脸检测训练程序阅读笔记(LBP特征)

1、训练程序整体流程 (1)读输入参数并打印相关信息 (2)进入训练程序最外层入口classifier.train 1)读正负样本,将正负样本放入imgLiast中,先读正样本,后读负样本 2)load(dirName)判断之前是否有已训练好的xml文件,若有,不在重新训练该stage的xml文件,没有返回false,初始化参数 3)计算requiredLeafFARate=pow(maxFalseAlarm,numStages)/max_depth,该参数是stage停止条件(利用训练样本集来计算tempLeafFARate,若 tempLeafFARate小于这一参数,则退出stage训练循环); 4)Stage训练循环 5)更新训练样本集,计算tempLeafFARate(负样本被预测为正样本的个数除以读取负样本的次数,第一次没有训练之前,这个比值为1,因为没训练之前, 所有负样本都被预测成了正样本,当第一层训练好以后,负样本采集时会先 用第一层的分类器预测一次,若能分类,则不选用,选用负样本的数目是固 定的,但选用这么多负样本总共要选的次数会随着层数的增多而加大,因为 层数越大,分类器的分类能力也要求越大,说需要的样本就是前面分类器所 不恩呢该识别的,故在采集时也比较困难。) 6)判断stage是否退出训练,若tempLeafFARatetrain() a.建立训练数据data=new CvCascadeBoostTrainData(主要是一些参 数的设置,还有特征值的计算) b.初始化样本权重update_weights(0); c.弱分类器训练循环 i)tree->train—》do_train ai)根节点的初始root=data->subsample_data(_subsample_idx); (主要是对根节点的一些参数进行初始化,parent0,count1, split0,value0,class_idx0,maxlr0,left=right=0,等等) bi)CV_CALL(try_split_node(root)),根据根节点计算整颗数的各 节点的参数配置 aii)calc_node_value(node);计算节点的回归值,类似于分类 投票值sum(w*class_lable),正样本的class_lable取,负样 本的class_lable取-1;计算节点的风险值node_risk,node risk is the sum of squared errors:sum_i((Y_i- )^2) bii)判断节点是否可以分裂(判断依据:样本值和设计的节 点最大深度);再利用node_risk与regression_accuracy, 如果这个节点的所有训练样本的节点估计值的绝对差 小于这个参数,节点不再进行分裂 cii)找出最佳分裂best_split=find_best_split(node); aiii)定义DTreeBestSplitFinder finder(this,node); biii)parallel_reduce(cv::BlockedRange(0,data->var_count), finder);此时调用DTreeBestSplitFinder类的操作符 DTreeBestSplitFinder::operator()(const

CMake编译Opencv自带源码及程序形成工程并运行教程

CMake编译Opencv自带源码及程序形成工程并运行教程 本教程基于https://www.360docs.net/doc/cb11557878.html,/2014/09/66490.html,感谢网友的贡献,本教程首先回顾一下网友的教程,重点在于解决网友没有提到的各种问题(第5章),因此前四章,大家也可以看原网址上提供的内容。 声明:纯粹经验之谈,重点是解决问题,若有理解错误,请多包涵~~ 一直很想直接打开运行opencv自带的示例程序,或者看看里面一些函数的源码,奈何opencv库里面给出的都是源文件,直接打开不能运行,没有编译形成VS中的工程方案,所以要看时,只得自己新建工程,然后复制过去,先不说麻烦,就算真弄过去了,还不一定能运行,因为它还可能有依赖项什么的问题(猜的),总之不一定能够顺利运行。后来听说可以用CMake对其进行编译,可以形成VS中的工程方案,然后直接就可以打开运行了,这当然方便多了,于是就有了下面的东西~~~ 1下载及安装CMake 在写本教程的时候,CMake最新版本为CMake3.4.1,下载网址为:https://https://www.360docs.net/doc/cb11557878.html,/download/,CMake有很多的发行版本,具体有哪些,作为一个小白,也不懂什么,只是知道其中有分source和binary两种版本,前面的那个版本貌似是对应源码版本,也就是给的是CMake的源码,如果我们要用它去编译其他如opencv的源码,那得先编译CMake的source文件,然后还要写CMakeList.txt(相当于是通过编程来实现编译其他文件,本人这么理解,若有误,莫怪~),这么复杂,对我来说,肯定不想要;因此,我选择了binary版本(直接是二进制文件,已经编译好了,并形成了可执行程序),下载之后是一个.exe文件,这个就好办多了,下载下来,点击运行一顿安装就可以了~~~ 开始进入正题~~~ 下面摘录一段关于CMake的介绍(摘自教程开头的网址): CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C 特性,类似UNIX下的automake。只是CMake的组态档取名为CmakeLists.txt。Cmake并不直接建构出最终的软件,而是产生标准的建构档(如Unix 的Makefile或Windows Visual C 的projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是CMake

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程序

* HandVu - a library for computer vision-based hand gesture * recognition. * Copyright (C) 2004 Mathias Kolsch, matz@https://www.360docs.net/doc/cb11557878.html, * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * * $Id: hv_OpenCV.cpp,v 1.15 2006/01/03 21:44:15 matz Exp $ **/ #ifdef WIN32 #include #endif #include #include #include #include #include #include"HandVu.h" IplImage *capture_image = 0; IplImage *display_image = 0; bool async_processing = false; int num_async_bufs = 30; IplImage *m_async_image = 0; int m_async_bufID = -1; bool sync_display = true; CvPoint origin; int select_object = 0; int sel_area_left=0, sel_area_top=0, sel_area_right=0, sel_area_bottom=0; bool correct_distortion = false; void OnMouse( int event, int x, int y, int/*flags*/, void* /*params*/ ) { if( !capture_image ) return;

OPENCV的配置过程 VS2010环境下 过程绝对简单

VS2010环境下OpenCV2.3.1的编译过程 备注: a、不需要Cmake编译!! b、如果是最新的2.3.1版本,则将下面第5步中的(5)和(6)中的名为230的lib修改成231即可,否则会出现找不到lib的情况。 c、不分x86和x64版本,一律按照这个方案配置就可以使用。 d、操作系统:Windows7x86中文旗舰版; 编译环境:Visual Studio2010中文旗舰版; OpenCV版本:OpenCV-2.3.0-win、OpenCV-2.3.1-win; 1.到https://www.360docs.net/doc/cb11557878.html,/index.php/Download下载OpenCV for Windows(也即OpenCV- 2. 3.1-win-superpack.exe文件)。 2.将OpenCV-2. 3.1-win-superpack.exe解压并放到某个目录下,例如D:\Program Files\OpenCV-2.3.1-win-superpack\opencv(无需运行setup.exe,解压则可)。解压后的目录结构如下图。

3.添加OpenCV的include和lib,步骤如下:在VS新建一个Win32控制台应用程序,以下以工程Opencv为例,然后选择菜单栏视图->属性管理器 这时在VS编辑器右侧出现属性管理器

点开之前建的工程Opencv,会看到Debug|Win32和Release|Win32两个目录 点开Debug|Win32目录,

找到https://www.360docs.net/doc/cb11557878.html,er,双击打开 找到箭头所指的”VC++目录”,打开,在右侧在”包含目录”中加入OpenCV安装目录下的 E:\ProgramFiles\OpenCV-2.3.1-win-superpack\opencv\build\include; E:\ProgramFiles\OpenCV-2.3.1-win-superpack\opencv\build\include\op encv;

opencv软件的下载和安装

OpenCV下载与安装 可以在https://www.360docs.net/doc/cb11557878.html,/downloads.html上下载各种版本的OpenCV的源码,Windows、Linux/Mac、iOS、Android都有相应的版本,所以OpenCV可以满足在各种操作系统下的开发,一般来说现有的无人驾驶智能车视觉信息认知计算研究团队都是在Windows和Linux平台下开发。目前OpenCV最新发布的是OpenCV 3.0 BETA 版本(这是一个公测版本),本书所有的视觉算法是基于OpenCV 2.4.3版本实现的。 OpenCV下载后安装极其简单,下面是一个以OpenCV 2.4.3版本为例的具体安装过程。 OpenCV下载后是一个可执行文件(.exe文件),如 OpenCV-2.4.3.exe,安装的时候只需要直接运行这个可执行文件,运行后或得到图1-4的安装路径的选择界面,安装过程实质就是一个解压过程。 图1-4 OpenCV安装的路径选择 如1-4所示是将OpenCV解压在计算机的C盘,安装(解压)完成后,可以在C盘中找到一个名称为opencv的文件夹,若能找到,

说明OpenCV安装完毕。不建议将OpenCV安装在C盘中(C盘一般是系统盘),因为OpenCV解压后的文件比较大。 1.2.3 环境配置 OpenCV安装完之后还需要进行环境配置才能使用,本书是以Windows7+Microsoft Visual Studio 2010下OpenCV 2.4.3的环境配置为案例介绍。 (1)设置OpenCV环境变量 OpenCV库函数需要通过用户环境变量调用所需要的库文件。点击:开始->计算机(右击)->属性->高级系统设置->高级->环境变量,在用户变量里新建一项: 变量名:path 变量值:C:\opencv\build\x86\vc10\bin 图1-5 设置环境变量

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

Open Source Computer Vision Library intro.html#SECTION00040000000000000000 https://www.360docs.net/doc/cb11557878.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训练图像集中文版

级联分类器训练 引言 级联分类器的工作主要包括两个阶段:训练和检测。检测阶段被描述在一个常规的OpenCV 文件的objdetect 模块的文档里。文档介绍了级联分类器的一些基本信息。目前的指南描述了如何训练级联分类器:一个训练数据集和运行训练应用程序的准备。 重要的笔记 在OpenCV里有两个应用程序可以用来训练级联分类器:opencv_haartraining和opencv_traincascade。opencv_traincascade是一个较新的版本,用C++按照OpenCV 2.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工具创建。 负样本 负样品来自任意图像。这些图像必须不包含被检测对象。负样本被放在一个特殊的文件里。这是一个在它的每一行包含一个负样本图像的文件名的文本文件(相对于描述文件的目录)。这个文件必须手动创建。注意,负样本和样本图像也被称为背景样本或背景样本图像,并在此文件中是可交换的。被描述的图像可以具有不同的尺寸。但每个图像应该是(但不一定)

基于OPENCV的人脸识别程序 代码详解

#include"cv.h" #include"highgui.h" #include #ifdef_EiC #define WIN32 #endif static CvMemStorage*storage=0; static CvHaarClassifierCascade*cascade=0; void detect_and_draw(IplImage*image); const char*cascade_name= "haarcascade_frontalface_alt.xml";//人脸检测分类器 int main(int argc,char**argv) { CvCapture*capture=0; IplImage*frame,*frame_copy=0; int optlen=strlen("--cascade="); const char*input_name; if(argc>1&&strncmp(argv[1],"--cascade=",optlen)==0) { cascade_name=argv[1]+optlen; input_name=argc>2?argv[2]:0; } else { cascade_name="E:\毕业设计\智能机器人动态人脸识别系统\陈建州程序.xml";//分类器路径 input_name=argc>1?argv[1]:0; } cascade=(CvHaarClassifierCascade*)cvLoad(cascade_name,0,0,0); if(!cascade)//如果没有找到分类器,输出以下 { fprintf(stderr,"ERROR:Could not load classifier cascade\n"); fprintf(stderr, "Usage:facedetect--cascade=\"\"[filename|camera_index]\n"); return-1;

相关主题
相关文档
最新文档