opencv
zhang11wu4
计算机硕士,专业:计算机应用技术,研究方向:图像图像,重点研究图像分割,包括单目标和多目标的自动分割,图像清晰化,目标检测等。QQ:46454279,仅限技术交流,其他免加.
展开
-
opencv Haartraining级联分类器 死循环
转自:http://blog.chinaunix.net/uid-7608308-id-2048365.html最近在做人脸检测的Haartraining训练分类器,发现训练到最后误检率很低时分类器总是卡到某一层就不在继续进行,像是进入了死循环,程序代码与参数输入应该是没有任何问题的,所以我从网上找这方面的资料,最后在OpenCV的中文论坛看到一个帖,终于找到原因了。具体如下:1、问题转载 2012-07-02 09:32:54 · 2105 阅读 · 0 评论 -
浅析人脸检测之Haar分类器方法
转自:http://www.cnblogs.com/ello/archive/2012/04/28/2475419.html由于工作需要,我开始研究人脸检测部分的算法,这期间断断续续地学习Haar分类器的训练以及检测过程,在这里根据各种论文、网络资源的查阅和对代码的理解做一个简单的总结。我试图概括性的给出算法的起源、全貌以及细节的来龙去脉,但是水平有限,只能解其大概,希望对初学者起转载 2012-05-14 17:04:19 · 2539 阅读 · 2 评论 -
opencv检测运动物体的基础_特征提取
opencv检测运动物体的基础_特征提取2011-01-07 12:45 特征提取是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。 特征的定义 至今为止特征没有万转载 2011-05-11 15:17:00 · 4141 阅读 · 1 评论 -
Mat中imread出错原因
1.把release版的lib库放在了debug的链接器中;2.imread函数的第一个参数要求是string类型,原因是它的源代码中要用到的finddecoder函数参数依然是string,并且还用到了FILE类的fopen函数, FILE* f= fopen( filename.c_str(), "rb" );所以在一开始向imread传参数时,就不能传入XXX.c_str()类型的。原创 2012-07-20 15:07:27 · 6341 阅读 · 0 评论 -
有关Mat的函数
Mat类成员函数1.addref() 为数据矩阵增加参考数,为防止内存泄露,一般不能显示调用,在多线程访问同一块数据区域是安全的。2.adjustROI(int dtop, intdbottom, int dleft, int dright) 调整ROI区域的位置3.assignTo(Mat& m,inttype=-1) const 内部调用,convertTo的函数原创 2012-08-08 16:44:01 · 4581 阅读 · 3 评论 -
OpenCV学习-利用ROI裁剪图片
为了提取到一幅图像中感兴趣的区域并裁剪出来作为一幅新图像的方法:1、利用void cvSetImageROI( IplImage* image, CvRect rect )函数设置感兴趣的区域;IplImage* src = cvLoadImage(“D:\\test.jpg”,1);cvSetImageROI(src,cvRect(0,0,0.5*src->width,0.5转载 2012-09-19 16:45:45 · 2158 阅读 · 0 评论 -
opencv矩阵乘法举例
#include "stdafx.h"#include #include "matlabCV.h"using namespace cv;float array1[]={3,1,2,0,1,5};float array2[]={4,3,1,1,6,0};float array3[]={-10,-2,-20,10};void PrintMatrix(CvMa转载 2012-08-15 08:14:34 · 3995 阅读 · 0 评论 -
copy a cv::Mat image (source) to a ROI of another (Destination) cv::Mat image
OpenCV 2.4:src.copyTo(dst(Rect(left, top, src.cols, src.rows));OpenCV 2.x:Mat dst_roi = dst(Rect(left, top, src.cols, src.rows);src.copyTo(dst_roi);e.g.bboxImage.copyTo(destImage.c转载 2012-09-28 22:44:21 · 1705 阅读 · 0 评论 -
cvSetData函数使用的问题
1.在一个函数中使用局部数组变量给CvMat数据赋值,当在函数外使用这个CvMat时,其中的数据出错,函数如下:void CSuperResolution::InitConf(){double filterG[4] = {1,0,0,-1};conf.filterG = cvCreateMat(1,4,CV_64FC1);cvSetData(conf.filterG,filte原创 2012-09-26 14:41:41 · 11481 阅读 · 0 评论 -
【转载】再谈OpenCV数据结构Mat详解
我记得开始接触OpenCV就是因为一个算法里面需要2维动态数组,那时候看core这部分也算是走马观花吧,随着使用的增多,对Mat这个结构越来越喜爱,也觉得有必要温故而知新,于是这次再看看Mat。Mat最大的优势跟STL很相似,都是对内存进行动态的管理,不需要之前用户手动的管理内存,对于一些大型的开发,有时候投入的lpImage内存管理的时间甚至比关注算法实现的时间还要多,这显然是不合适的。除了转载 2013-12-22 20:34:18 · 990 阅读 · 0 评论 -
OpenCV矩阵结构CvMat初探
摘自:http://blog.csdn.net/chenli2010/article/details/67815361. 理解CvMat结构的数据类型 新建二维矩阵:cvMat* cvCreateMat(int rows, int cols,int type);其中type可以是任何预定义类型,其结构为:CV_(S|U|F)C,bit_depth表示存储一个数字所需要的转载 2013-12-22 20:30:09 · 879 阅读 · 0 评论 -
opencv2.4.3链接库文件名
opencv_calib3d243d.libopencv_contrib243d.libopencv_core243d.libopencv_features2d243d.libopencv_flann243d.libopencv_gpu243d.libopencv_highgui243d.libopencv_imgproc243d.libopencv_legacy2原创 2013-02-18 17:35:38 · 2002 阅读 · 0 评论 -
opencv2.4.3不能读AVI视频的解决办法
opencv2.4.3不能读非压缩视频,所以在播avi视频前要确认视频为压缩,如果不是,要先进行压缩。使用软件是VirtualDub ,用其中的“microsoft video 1 compression”进行压缩,软件下载。如下图所示:原创 2013-01-17 11:30:43 · 2231 阅读 · 0 评论 -
【OpenCV】访问Mat图像中每个像素的值
今天百度搜资料还搜到了自己的。。。《访问图像中每个像素的值》,这是之前写的了,用的也是2.0的风格IplImage*格式,不太适用后来Mat的格式,特此重写一篇。以下例子源自《The OpenCV Tutorials --Release 2.4.2》2.2 How to scan images, lookup tables and time measurement with OpenCV转载 2012-07-27 14:51:22 · 1448 阅读 · 0 评论 -
opencv 将两张图片显示到一幅图片中
转自:http://hi.baidu.com/cmkyec/blog/item/2f8a912283179cfed6cae264.html 利用opencv处理图片后,希望将处理后的图片和处理前的图片显示在一起,以方便看出两者之间的差别。 刚开始的想法是利用SetImageRoi和CvCopy函数,可是CvCopy函数必须要求源图片和目的图片的尺寸一致,即使设置了Roi转载 2012-08-15 11:05:11 · 3819 阅读 · 0 评论 -
opencv中mat,cvmat,Iplimage结构体定义以及格式互相转换。
转自http://blog.sina.com.cn/s/blog_534497fd01015k7z.htmlopencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“图像”,opencv对其中的图像操作(缩放、转载 2012-08-15 18:55:11 · 731 阅读 · 0 评论 -
opencv中Mat和CvMat访问元素的方式
1.Mat类型for(int i=0;i{ double* pLine = (double*)dict_hires.ptr(80);for(int j=0;j{printf(" %f ",pLine[j]);}printf("\n");}2.CvMat类型 for(int i=0;i{double* pLine = res.c原创 2012-09-19 11:32:11 · 2891 阅读 · 0 评论 -
CvMat元素打印重载的函数
1.void PrintCvMatElements(CvMat* mat,int nRows,int nCols,int nArg,char* strMatName,float fVal)//nArg是用来指示数据类型的,float类型4字节,double类型8字节,uchar类型1字节{printf("%s:\n",strMatName);for(int i=0;i{//原创 2012-09-19 13:57:31 · 1042 阅读 · 0 评论 -
CvMat执行CvReshape()报错“The matrix is not continuous, thus its number of rows can not be changed”
CvMat执行CvReshape()报错“The matrix is not continuous, thus its number of rows can not be changed”,采用如下处理方式: 重新生成一个全新的矩阵,具有相同的数据,那么数据就是连续的,就能执行reshape()函数操作。Mat patchMatTmp;patchMat.copyTo(pat原创 2012-09-25 15:34:57 · 4931 阅读 · 1 评论 -
MFC使用opencv2.3.1的环境配置
1.头文件包含设置#include "opencv2/opencv.hpp"#include //#include "cv.h"//#include "highgui.h"using namespace std;using namespace cv;2.类库设置(1)debug:opencv_calib3d231d.lib opencv_contrib231原创 2012-05-18 17:16:59 · 1315 阅读 · 0 评论 -
cvcopy实现不规则图片提取
程序要求:请自备同大小同的图片两张,一张为原图srcImg,为三通道图片,另一张为mask图,为单通道图片。下面是Opencv官方手册的对cvCopy的说明:Copy拷贝一个数组给另一个数组 void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL );src 输入数组。 dst 输出数组。转载 2012-05-17 22:59:30 · 951 阅读 · 0 评论 -
opencv人脸检测分析(1)
OpenCV的人脸检测主要是调用训练好的cascade(Haar分类器)来进行模式匹配。cvHaarDetectObjects,先将图像灰度化,根据传入参数判断是否进行canny边缘处理(默认不使用),再进行匹配。匹配后收集找出的匹配块,过滤噪声,计算相邻个数如果超过了规定值(传入的min_neighbors)就当成输出结果,否则删去。匹配循环:将匹配分类器放大scale(传入转载 2012-05-14 17:09:08 · 1238 阅读 · 0 评论 -
opencv haar训练--训练样本(4)
1.海尔训练现在,我们使用haartraining.exe来训练我们自己的分类器。训练语句如下:Usage: ./haartraining -data -vec -bg [-npos ] [-nneg ] [-nstages ] [-nsplits ] [-mem ] [-sym (default)] [-no转载 2012-05-14 17:07:21 · 1978 阅读 · 0 评论 -
opencv haar训练样本准备(1)
OpenCV给我们提供了很多训练分类器的方法和程序。对于人脸检测的分类器训练叫做海尔训练,我们可以用这些方法创建我们自己的分类器。(一)数据准备:正样本(人脸) 我们需要收集只含有脸部的图像。The UMIST Face Database 有着类似Video般的连续脸部图像,不论是正脸的还是侧脸的。我以为训练这些图像能生成一个面部表情鲁棒性很好的脸部检测器。然而我转载 2012-05-14 17:05:56 · 1139 阅读 · 0 评论 -
opencv取像素宏
#define S(image,x,y) ((uchar*)(image->imageData + image->widthStep*(y)))[(x)]//S原创 2012-05-28 10:18:25 · 1126 阅读 · 0 评论 -
cvNormalize函数
Normalize根据某种范数或者数值范围归一化数组.void cvNormalize( const CvArr* src, CvArr* dst,double a=1, double b=0, int norm_type=CV_L2,const CvArr* mask=NULL );src输入数组dst输出数组,支持原地运算a输出数组的最小/最大值或者转载 2012-05-02 15:46:28 · 1346 阅读 · 0 评论 -
opencv不能读视频问题解决
最初是vs2005+opencv2.0读笔记本内置摄像头视频,pCapture=cvCaptureFromCAM(1);pCapture返回0。后改为opencv2.1,pCapture有值,但还是不出图像,并有蓝屏。经过分析,首先重装摄像头驱动,然后拨掉电视盒的usb接头(这个软件在关闭电脑偶尔就会蓝屏),再运行程序就正常了,能够捕获到内置摄像头的视频。原创 2012-01-16 22:41:00 · 1255 阅读 · 0 评论 -
opencv2.3没有CvvImage的解决办法
转自:http://blog.sina.com.cn/s/blog_79a0eceb0100ybg0.html如何在OpenCV2.3中实现CvvImage,根据网络各个高手的方法,我自己的总结如下。首先,找到CvvImage的原代码。我在网上已经找到了,具体代码如下。这是CvvImage.h文件。#pragma once#ifndef CVVIMAGE_CLASS转载 2012-05-20 10:56:07 · 7045 阅读 · 0 评论 -
帧间差框架
IplImage* pPreFrame=NULL;IplImage* pCurrFrame=NULL;IplImage* pDiffImg=NULL;int nFrameNum=0;for(;;){ pCurrFrame=cvQueryFrame(pCapture)) if(!pCurrFrame) break; nFrameNum++; if(nFra原创 2012-06-15 14:52:12 · 643 阅读 · 0 评论 -
位图的宽度为什么要:#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4)
一、问题:请问位图的宽度为什么要: #define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4) WIDTHBYTES(lWidth * 8); 其中lWidth代表位图的宽度。二、4. 位图数据 位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是左到右,扫描行之间是原创 2011-01-01 10:31:00 · 4600 阅读 · 3 评论 -
opencv中的CvMat相关
1.初始化矩阵:方式一、逐点赋值式:CvMat* mat = cvCreateMat( 2, 2, CV_64FC1 );cvZero( mat );cvmSet( mat, 0, 0, 1 );cvmSet( mat, 0, 1, 2 );cvmSet( mat, 1, 0, 3 );cvmSet( mat, 2, 2, 4 );cvReleaseMat( &ma转载 2012-08-14 09:51:50 · 702 阅读 · 0 评论 -
opencv和matlab计时
一、opencv给程序计时对于程序员来说实在是太重要了,在windows上的那个clock()实在是不够精确,精度只有10ms,真让人难过。研究了下windows下使用C、C++计时的函数,给大家分享下。主要就是两个函数的使用。我先把一段可以运行的代码贴出来,然后讲讲这两个函数。[cpp] view plaincopy#include转载 2012-10-10 17:44:01 · 2909 阅读 · 0 评论 -
opencv中的多通道矩阵CvMat元素的访问
CvMat* mat;mat = cvCreateMat(9,10,CV_64FC3);//注意所申请矩阵元素的类型,不同的类型访问操作方法不同,但类似可推导,以此为例。opencv中的多通道矩阵CvMat元素的访问方法总结如下:1. mat(i,j,1): *(mat->data.db + i*(mat->step/8) + 3*j);//.db为double数据类型,ste转载 2012-08-15 11:17:04 · 2270 阅读 · 1 评论 -
opencv命名规则
OpenCV使用近似匈牙利命名法的方法,比较值得一提的特色是,它的资料结构几乎都是大写的Cv开头,而他的副程式都是小写的cv,举个例子: CvSize ImageSize1 = cvSize( 400 , 300 );//cvSize(width,height)资料结构ImageSize1的型态是CvSize,藉由cvSize()这个副程式来初始化资料结构,400代表的是宽,300代表的是转载 2012-08-08 16:54:51 · 746 阅读 · 0 评论 -
opencv2.3.1源码调试方法
主要办法:使用CMake重新编译opencv的源码,再使用编译出来的dll文件(而不是使用opencv自带的dll文件)即可,具体方法如下:1.cmake编译文件:http://wenku.baidu.com/view/0abdbc6eaf1ffc4ffe47ac8e.html 此处一般会遇到两个错误:(1)vs没有关闭,造成不能注册宏;(2)缺少cuda目录,解决办法:...DIR,原创 2012-07-16 10:53:56 · 2663 阅读 · 0 评论 -
opencv2 Mat详解
Mat::~MatMat的析构函数。C++: Mat::~Mat()析构函数调用Mat::release()。Mat::operator =提供矩阵赋值操作。C++: Mat& Mat::operator=(const Mat& m)C++: Mat& Mat::operator=(const MatExpr_Base& expr转载 2012-07-13 17:21:51 · 4086 阅读 · 0 评论 -
vs2005编译opencv 2.1[CMake 2.8.4 Python 2.6.5]
a,用cmake-gui,生成vs2005的sln文件b,双击第一个出错点,更正为://#include "pmmintrin.h"#include "intrin.h"d,继续编译,剩下最后一个工程,cvpy连接失败,找到python26目录里面的python.lib文件,保存,将同目录下的python_d.lib文件改名为这个文件,再重新编译转载 2012-01-15 15:06:38 · 938 阅读 · 0 评论