opencv算法学习
文章平均质量分 63
wobuaishangdiao
我是一个快乐的小傻子,每天不打烊,每天坚持学习自己喜欢的。
展开
-
opencv学习笔记-入门(16)人脸检测、跟踪与人脸识别
一、背景知识(1)从main入手的对原人脸检测历程进行了参考以及开进, vector names;定义的矢量string组,它和直接定义的数组相比,可以对矢量的长度单元进行相应的增加和减少。因而它是更利于存储一些未知的组数据的。(2) _finddata_t file;这个变量的定义用来存储文件的各种信息,便于之后的文件的查找应用,在之后的识别过程中会用到。那么到底如何查找原创 2012-06-22 18:48:54 · 18845 阅读 · 6 评论 -
opencv学习笔记-入门(35)libsvm使用说明
1.首先要学习下吧svm, 这个非一日之寒, 网上已经有很多svm的学习教程特别推荐如下:首先是入门级的:(绝对深入浅出)http://www.blogjava.net/zhenandaci/category/31868.html看完这个后应该看一些较深入的:http://blog.csdn.net/v_july_v/article/details/7624837 还有他推荐的一些博客原创 2012-08-13 19:25:06 · 2999 阅读 · 0 评论 -
opencv学习笔记-入门(33)多通道数据的赋值与读取
1.CvMat数据的处理哦:#pragma comment( lib, "cxcore.lib" )#include "cv.h"#include void main(){ //矩阵元素为三通道浮点数 CvMat* mat = cvCreateMat(3,3,CV_32FC3); cvZero(mat);//将矩阵置0 //为矩阵元素赋值 //获得原创 2012-08-09 20:37:24 · 1864 阅读 · 0 评论 -
opencv 学习笔记-入门(34)内存使用要慎重
1. 在创建字符串指针的时候,最好都创建为动态的指针,这样可以排除后面的出错。切记切记例如:char *CNum = new char[offset/4];当复用的时候,总会出现提示内存超界,程序无法运行。你的绝大多数时间将会浪费在此,最好要这样定义啊。2.在进行一个算法的实现时,一定要有一个计时函数啊,这样可以对你程序优化起到很大的作用,double t = (doubl原创 2012-08-10 01:32:19 · 610 阅读 · 0 评论 -
opencv学习笔记-入门(32)264文件解码即YUV420文件格式图像的显示
1.要实现的目的是远程视频监控,实现了由ARM板采集的编码视频回传到服务器上,但是出现一个问题由264编码文件的格式为YUV420编码格式文件,用它进行处理时,会出现很大的问题,编码文件的提醒。需要进行解码。2.找到了H264的编解码源码,进行解码操作。首先找到主函数,寻找其读取文件的接口,在ldecod.c文件中,Configure函数下,找到了文件接口,并且利用这个进行了解码,原创 2012-08-08 18:55:01 · 6092 阅读 · 2 评论 -
opencv学习笔记-入门(29)精华收藏版c++下Mat and IplImage 转化
IplImage -> cv::Mat這個範例程式裡 image.cpp有啊,做個簡單的範例。Ex. IplImage* pImg = cvLoadImage("lena.jpg");cv::Mat img(pImg,0); //0是不複製影像,也就是pImg與img的data共用同個記憶體位置,header各自有cv::Mat -> IplImagecxcore.原创 2012-07-23 16:52:30 · 817 阅读 · 0 评论 -
opencv学习笔记-入门(33)移动目标检测
两种类型:基于像素的移动目标检测和基于区域的移动目标检测。1,帧差,采用gray图像进行帧差(1)gray_pre 与 gray_aft进行帧差,并进行之后的阈值判断区分出前景背景#include "iostream"#include "highgui.h"#include "opencv2/opencv.hpp"#include "imgproc/imgproc.h原创 2012-08-05 16:49:48 · 231 阅读 · 0 评论 -
opencv 学习笔记-入门(22)之快速hog的减少取样实现-论文笔记
[Pang, 2011] Y. Pang, Y. Yuan, X. Li, et al. Efficient HOG human detection [J]. Signal Processing, 2011, 91: 773-781. 阅读笔记 We call this method as cell-based trilinear interpolation.To decre原创 2012-07-16 15:23:04 · 1991 阅读 · 2 评论 -
opencv 学习笔记-入门(23)hog的快速积分图像-论文笔记
《An HOG-LBP Human Detector with Partial Occlusion Handling》阅读笔记:It can filter out noises using the concept of uniform pattern. We believe that the appearance of a human can be better captured if we原创 2012-07-16 16:29:27 · 4495 阅读 · 1 评论 -
opencv学习笔记-入门(28)之stack overflow
由于hog 提取的特征样本的数量之多,要建立一个矩阵将其所有的特征来存储进行训练, 我建立用:float data[2670 * 3758]; 结果每次都提醒,stack overflow原因如下:默认分配的stack大小为1M, 解决方法:1)project property->Configuration Properties->Linker->System->Stack原创 2012-07-22 21:11:07 · 891 阅读 · 0 评论 -
opencv学习笔记-入门(36)Meanshift,聚类算法
【转载】记得刚读研究生的时候,学习的第一个算法就是meanshift算法,所以一直记忆犹新,今天和大家分享一下Meanshift算法,如有错误,请在线交流。Mean Shift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束. 1. Meanshift推导给定d维空间Rd的n个样原创 2012-08-14 17:23:24 · 4646 阅读 · 1 评论 -
opencv学习笔记-入门(25)Mat 的学习
(一)Mat矩阵中数据指针Mat.data是uchar类型指针,CV_8U系列可以通过计算指针位置快速地定位矩阵中的任意元素。二维单通道元素可以用Mat::at(i, j)访问,i是行序号,j是列序号。但对于多通道的非unsigned char类型矩阵来说,以上方法都不好(注:后来知道可以通过类型转换,用指针访问data数据,见后文)。可以用Mat::ptr()来获得指向某行元素的原创 2012-07-17 11:23:32 · 17057 阅读 · 0 评论 -
opencv学习笔记-入门(7)单通道的图像数据访问
(4) 基于指针的直接访问: (简单高效)对于单通道字节型图像:IplImage* img = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);int height = img->height;int width = img->width;int step = img->widthStep;uchar*转载 2012-06-13 20:07:07 · 1661 阅读 · 0 评论 -
opencv学习-文件库的读取
参考之前写的人脸识别的文件读取,这里要进行手势的识别,应此对一些手势进行了保存,需要读取的vector中。 opencv学习笔记-入门(16)人脸检测、跟踪与人脸识别 实现和原理这里介绍得很清楚了:#include "stdafx.h"#include "iostream"#include "io.h"#include "vector"#include "string"原创 2013-02-25 16:14:21 · 663 阅读 · 0 评论 -
opencv学习笔记(38) openni2手部的跟踪
1, 利用nite2 中的历程,在其上进行发挥,对手部进行了跟踪,首先要进行初始化nite初始化,openni初始化:void initliazation(int argc, char** argv) { //1. init the openni openni::OpenNI::initialize(); deviceUri = openni::ANY_DEVICE; fo原创 2013-01-19 11:40:31 · 2468 阅读 · 1 评论 -
opencv学习笔记—入门(37)openni2手势识别
直接如题:通过自带的opennii2中的手势识别,其中包括RAISE, WAVE, CLICK三种手势,通过运行结果,三种手势都可识别,RAISE的识别率最高,而WAVE和CLICK很少,但都基本上实现了。首先是openni和nited的初始化,表明要进行手势的识别:void initliazation(int argc, char** argv) { //1.原创 2013-01-16 11:20:00 · 2893 阅读 · 0 评论 -
opencv学习笔记—opencv+openni2 深度图像与彩色图像的读取与显示
”站在巨人的肩膀上“参考针对openni 1.0系列的读取,并且利用openni2中自带的历程,多通道数据的读取,得到彩色图像与深度图像,然后利用opencv的mat进行了显示:#include "iostream"#include "OpenNI.h"#include "opencv\cv.h"#include "opencv\highgui.h"using namespace原创 2013-01-10 11:48:05 · 3072 阅读 · 1 评论 -
opencv学习笔记(50)——积累
1 。 存入磁盘:imwrite( "../../images/Gray_mage.jpg", gray_image );2.设计滚动条回调函数: IplImage *image = 0, *cedge = 0, *gray = 0, *edge = 0; // define a trackbar callbackvoid on_trackbar(int h原创 2012-12-31 00:52:11 · 739 阅读 · 0 评论 -
学习opencv+openNI的安装过程
马上的kinect就要到了,首先将环境配置一下,配置过程中,我首先看了网上说的一些安装过程,下载openni . 下载sensorkinect 下载nite, 进入openni下载页面后,按上面说的,进行这个什么binarys的不稳定版的相关配置,我没找到,只找到下载页面了,但是下下来后,不行(要注意版本问题)。参见http://viml.nchc.org.tw/blog/paper_原创 2012-12-22 18:51:34 · 771 阅读 · 0 评论 -
opencv学习笔记-入门(11)运动模板
(一)运动物体检测(在代码参考即书上学习过程中遇到的问题先整理下,再进行自己代码相关的介绍) (1)points[]参数的解释 (在此处先进行内存的申请,并且在后续进行角点的存储) 最近在做基于OpenCV的点特征视频跟踪算法研究,老是出现assertion failed 问题,搞的我几乎差点放弃了,网上关于这个的帖子也比较少,但是这个最后解决了,很高兴啊。呵原创 2012-06-18 08:40:47 · 231 阅读 · 0 评论 -
opencv 学习笔记-入门(30)hog+svm 的实现
一.想要做行人检测,必须要看的一篇论文《Histograms of Oriented Gradients for Human Detection》为Dalal和Bill Triggs的经典之作。主要实现的流程为 (1)首先提取图片进行图片的 gamma compression 这样是图片的表面得到变换,其中可采用s原创 2012-07-23 20:02:45 · 2957 阅读 · 1 评论 -
opencv 学习笔记-入门(4)
一、256色转灰度图 算法介绍(百度百科): 什么叫灰度图?任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度: 1.浮点算法:Gray=R*0.3+G*0.59+B*0.11 2.整数方法:Gray=(R*30+G*59+B*11)/100 3.移位方法:Gray =(R*28原创 2012-06-07 20:57:51 · 800 阅读 · 0 评论 -
opencv学习笔记-入门(27)高斯核单数维双数维的构造
CvMat* GaussianKernel2D(int dim, float sigma) { CvMat* mat=cvCreateMat(dim, dim, CV_32FC1); CvMat* mat1=cvCreateMat(dim, dim, CV_32FC1); CvMat* mat2=cvCreateMat(dim, dim, CV_32FC1); #defi原创 2012-07-17 12:21:07 · 84 阅读 · 0 评论 -
opencv学习笔记-入门(31) 计时函数的应用及视频处理心得
1.在不少算法中,总会遇到计算算法用时的情况,一般使用getTickCount.在opencv2refman.pdf中介绍了这个函数getTickCountReturns the number of ticks.C++:int64 getTickCount()Python:cv2.getTickCount()->retvalThe function re原创 2012-08-03 17:40:11 · 3645 阅读 · 0 评论 -
opencv学习笔记—入门(27)之高斯核单、双维的构造函数
CvMat* GaussianKernel2D(int dim, float sigma) { CvMat* mat=cvCreateMat(dim, dim, CV_32FC1); CvMat* mat1=cvCreateMat(dim, dim, CV_32FC1); CvMat* mat2=cvCreateMat(dim, dim, CV_32FC1); #define原创 2012-07-19 09:28:29 · 6045 阅读 · 1 评论 -
opencv学习笔记-入门(17)灰度图的理解
参见JILY博客的数字图像处理。#include "stdafx.h"#include "iostream"#include "opencv/cv.h"#include "opencv/highgui.h"using namespace std;//int His[his];void Convert256toGray(const CvArr * srcarr, CvArr *dsta原创 2012-06-22 18:55:41 · 971 阅读 · 1 评论 -
opencv学习笔记-入门(6)-camshift
CamShift算法简介CamShift算法,即"ContinuouslyApative Mean-Shift"算法,是一种运动跟踪算法。它主要通过视频图像中运动物体的颜色信息来达到跟踪的目的。我把这个算法分解成三个部分,便于理解:Back Projection计算。Mean Shift算法CamShift算法1 )Back Projection计算(反向投影)计算Ba原创 2012-06-21 20:10:35 · 3674 阅读 · 0 评论 -
opencv学习笔记(16)
不小心看到,幫忙答一下IplImage -> cv::Mat這個範例程式裡 image.cpp有啊,做個簡單的範例。Ex. IplImage* pImg = cvLoadImage("lena.jpg");cv::Mat img(pImg,0); //0是不複製影像,也就是pImg與img的data共用同個記憶體位置,header各自有cv::Mat -> IplImagecxc原创 2012-06-21 09:30:31 · 61 阅读 · 0 评论 -
opencv学习笔记-入门(15) 之 Thresholding
IntroductionThresholding is one of the most basic techniques for what is called Image Segmentation. When you threshold an image, you get segments inside the image… each representing something. F原创 2012-06-20 16:49:19 · 1025 阅读 · 0 评论 -
opencv学习笔记- 入门(14)之 CvConnectedComp
typedef struct CvConnectedComp {double area; //区域的面积CvScalar value; //区域颜色的平均值CvRect rect; //是一个区域的外接矩形CvSeq * contour; //指向另一个序列的指针};原创 2012-06-20 14:34:07 · 2581 阅读 · 0 评论 -
opencv学习笔记 -入门(13)之CvBox2D
其中返回的2D盒子定义如下:1 typedef struct CvBox2D 2 { 3 CvPoint2D32f center; /* 盒子的中心 */ 4 CvSize2D32f size; /* 盒子的长和宽 */ 5 float angle; /* 水平轴与第一个边的夹角,用弧度表示*/ 6 }CvBox2D; 注意夹转载 2012-06-20 14:31:14 · 3184 阅读 · 0 评论 -
opencv学习笔记
那么到底如何查找文件呢?我们需要一个结构体和几个大家可能不太熟悉的函数。这些函数和结构体在的头文件中,结构体为struct _finddata_t ,函数为_findfirst、_findnext和_fineclose。具体如何使用,我会慢慢讲来~ 首先讲这个结构体吧~ struct _finddata_t ,这个结构体是用来存储文件各种信息的。说实话,这个结构体的具体定义代码,原创 2012-06-20 08:37:58 · 87 阅读 · 0 评论 -
opencv学习笔记-入门(9)鼠标记录函数积累
void on_mouse( int event, int x, int y, int flags ,void *p){ if( !image ) return; if( image->origin ) y = image->height - y; if( select_object ) { sele原创 2012-06-13 21:11:42 · 795 阅读 · 0 评论 -
opencv学习笔记-入门(8)矩形框调整函数的积累
//调整矩形框B,使其在A的范围CvRect my_ChangeRect(CvRect A,CvRect B){ if(B.x<A.x) B.x=A.x; if(B.x+B.width>A.width) B.width=A.width-B.x; if(B.y<A.y) B.y=A.y; if(B.y+B.height>A.height原创 2012-06-13 21:09:50 · 971 阅读 · 0 评论 -
svm
http://blog.csdn.net/v_july_v/article/details/7624837 支持向量机1、分类又称为模式识别,直接不好分类的可以找和他相关的一些基本点来作为依据。也好对日后的情形进行判断。监督学习:利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,也称为监督训练或有教师学习。所谓的结构风险最小化就是在保证分类精度(经验风险)的同时原创 2012-06-24 15:44:06 · 129 阅读 · 0 评论 -
opencv学习笔记-入门(17)CvRNG基本随机数
#include "stdafx.h"#include "cv.h"#include "highgui.h"#include #include #pragma comment(lib,"cv200.lib")#pragma comment(lib,"cxcore200.lib")#pragma comment(lib,"highgui20转载 2012-06-26 17:08:36 · 1774 阅读 · 0 评论 -
opencv学习笔记-入门(18)矩阵创建
昨天在写我的一个工程里面,要用到opencv里面的矩阵,但是在opencv里面矩阵的表示有很多种,用来用去就有点混,然后造成写程序的时候调试半天。现在写下我自己的理解。第一种CvMat* cvCreateMat( int rows, int cols, int type )用法: 首先,看他返回是一个CvMat *,所以要先定义一个CvMat *mat;指针原创 2012-06-26 17:24:33 · 951 阅读 · 0 评论 -
opencv学习笔记-入门(26)hog中gridents和angle函数
Simple 1-D[ 1;0;1] masks at & =0 work best.For colour images, we calculate separate gradients for each colour channel,and take the one with the largest norm as the pixel's gradient vector.以最大的那原创 2012-07-17 12:18:13 · 2491 阅读 · 2 评论 -
opencv学习笔记-入门(24) gamma变换,矫正,压缩篇收藏
法一:创建GAMMA查找表void gammaLUT(double sigma){double f;for (int i = 0; i {f = (i+0.5)/256;f = pow(f,sigma);glut[i] = UINT8(f*256-0.5);}}利用查找表进行矫正void gammaCorrect(Mat& image){原创 2012-07-17 10:42:55 · 1656 阅读 · 0 评论 -
opencv 学习笔记-入门(21)之三线性插值-hog(二)
图 1. 所谓的三线性插值指的是在(x,y,theta)这三个参数空间中进行插值,即x方向、y方向和梯度的角度空间,如图1所示,图中的象素点(x,y)在利用梯度幅值作为权重进行投票时,要根据该象素点距离其他格子中心的距离进行加权,同时该象素点的梯度方向也要在其相邻的区间内进行插值,用数学公式描述如下式所示。原创 2012-07-16 11:17:42 · 6526 阅读 · 1 评论