随笔分类 -  OpenCV

上一页 1 2 3
opencv使用方法,源码分析,工程设计
总结系列_5(opencv知识点,续...)
摘要:1. 得到Mat类型img的size,可以使用函数img.size(),注意这里有括号。但是在需得到img的行和列时,不需要使用括号,即使用img.rows和img.cols. 2. 已经定义好了img为Mat型,但是没有初始化,在后面程序的任何一个位置可以使用下面的代码初始化img,比如img=Mat(***1,***2),其中***1是矩形区域的大小,***2是数组内数据类型。 3. 在opencv中像素点的数据类型能找到对应类似char,int,float,double的,比如说是分别为CV_8UC1,CV_16UC1,CV_32FC1, CV_64FC1,一定要注意是没有这一说... 阅读全文
posted @ 2012-05-14 00:07 tornadomeet 阅读(6674) 评论(1) 推荐(2) 编辑
目标跟踪学习笔记_3(particle filter初探2)
摘要:上次已经初步体验了下particle filter,直接用别人的代码,见我前面的博文http://www.cnblogs.com/tornadomeet/archive/2012/03/18/2404817.html 一开始是内存出错,后面干脆自己学了下particle filter滤波的原理,把代码认真看了一遍,然后自己从头敲了遍代码,虽然运行时不再出现内存溢出等bug,但是没有跟踪效果。 这次的代码和上次一样,有跟踪效果,不过不理想。依旧是参照博主:http://blog.csdn.net/yang_xian521/article/details/6928131 的代码,但是算法稍... 阅读全文
posted @ 2012-05-08 23:11 tornadomeet 阅读(6116) 评论(3) 推荐(1) 编辑
基础学习笔记之opencv(5):实现鼠标选定矩形框
摘要:opencv编写程序中,用鼠标选定矩形框经常用到。编程时看似很简单的逻辑思路,如果对opencv中的Rect不是很了解的话,那实现的效果就不是特别理想,比如说虽然我们习惯性用鼠标从左上到右下选择,但是偶尔也会从左下到右上选择等等…… 开始自己实现这个功能后,发现写的代码比较繁琐,if语句太多。后面看了opencv的例程后,感觉它的代码效率非常高。下面就是用来练习下的。 环境:opencv2.3.1+vs2010 功能:打开摄像头,捕捉视频图像,用鼠标选定视频区域(支持各种选择习惯)。 代码和注释如下: 1 #include "stdafx.h" 2 #include &qu 阅读全文
posted @ 2012-05-04 21:58 tornadomeet 阅读(14893) 评论(0) 推荐(1) 编辑
基础学习笔记之opencv(4):直方图使用学习
摘要:目的: 直方图在cv领域到处可见,因为其功能在cv算法的实现中必不可少。Opencv库中也集成了关于直方图的不少函数,比如直方图的计算,均衡,归一化,相似度比较等等。为了体验这些函数,做了个小实验,功能是:打开摄像头,鼠标选定一个框,框内图像作为标准图像,计算出其直方图并显示出来;然后继续鼠标选定框,该框内的图像的直方图与标准图像的进行相似度计算,计算结果在终端输出,数值越大表示相似度越大。 工程环境:opencv2.3.1+vs2010。工程代码: 1 // hist_test.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h&quo 阅读全文
posted @ 2012-05-03 16:39 tornadomeet 阅读(27090) 评论(3) 推荐(2) 编辑
前景检测算法_2(帧差法1)
摘要:帧差法是背景减图法中的一种,只不过是帧差法不需要建模,因为它的背景模型就是上一帧的图,所以速度非常快,另外帧差法对缓慢变换的光照不是很敏感,所以其用途还是有的,有不少学者对其做出了出色的改进。 其基本原理可以用下面公式看出: |i(t)-i(t-1)|<T 背景 |i(t)-i(t-1)|>=T 前景 其中i(t),i(t-1)分别为t,t-1时刻对应像素点的像素值,T为阈值。 当然其缺点也不少,容易出现”双影”和”空洞”现象。 用opencv2.3.1+vs2010做了个简单的实验,其实验代码如下: 1 // frame_diff.cpp : 定义控制台应用程序的入口点。 2.. 阅读全文
posted @ 2012-05-01 09:28 tornadomeet 阅读(31174) 评论(13) 推荐(5) 编辑
总结系列_3(opencv中c版本和c++版本区别体验,续...)
摘要:1. 显示窗口大小的改变方法不同。 在c版本中,定义一个窗口时用cvNamedWindow. 比如说cvNamedWindow(“src”,0);后面的参数为0表示窗口大小可以手动改变,否则窗口的大小是自适应图片大小的。 而在c++版本中定义一个窗口用namedWindow. 比如说namedWindow(“src”,1);不管后面第二个参数是多少,都不能手动更改窗口的大小,因为它的尺寸是根据图片大小自动生成的。 并且要看到手动调整窗口大小的效果,还需要配合cvShowImage(“src”,img); 也就是说如果后面显示用c++版本的imshow(“src”,img);也是看... 阅读全文
posted @ 2012-04-29 17:33 tornadomeet 阅读(9833) 评论(5) 推荐(1) 编辑
总结系列_2(vc,opencv,Qt等错误调试,续...)
摘要:本文将总结一些在使用opencv+vs过程中碰到的error。 1.程序编译通过,运行时出现如下错误: 解决方法: a.可能是读取文件时出现错误,比如说读图片,视频等文件名字或路径弄错了。 2. 编译程序通过,运行时出现如下错误: 解决方法: a.可能是数据类型不对,比如说在该语句中gray_diff.at<unsigned char>(i,j)=255; 本来gray_diff中的数据类型是unsigned char的,如果你写成了gray_diff.at< int>(i,j)=255;或者是写成其它的就会报类似的错误。 3. 当编译通过,运行程序一段时间后出现如下提 阅读全文
posted @ 2012-04-23 22:11 tornadomeet 阅读(5943) 评论(0) 推荐(0) 编辑
总结系列_1(opencv需常用的小工程,续...)
摘要:本文中将列出opencv需常用的最小工程,以方便今后做测试用。 工程环境为vs2010+opencv2.3.1一、opencv读取图片并显示出来: 代码为: 1 #include "stdafx.h" 2 #include <opencv2/highgui/highgui.hpp> 3 4 using namespace cv; 5 6 int main(int argc,unsigned char* argv[]) 7 { 8 Mat img_src; 9 for (;;)10 {11 img_src=imread("lena.jpg"); 阅读全文
posted @ 2012-04-23 22:01 tornadomeet 阅读(3678) 评论(0) 推荐(0) 编辑
opencv源码解析之(5):CommandLineParser类的简单理解
摘要:好像在opencv的c版本中,应该是opencv1.0以前,还没有出现CommandLineParser这个类,最近看到opencv2.3后面的版本里自带的samples,很多都用到了CommandLineParser 这个类,那么这个类到底有什么作用呢,从命名大概可以猜出这是个命令行解析类。因为我们知道opencv是一个开源库,所以其很少有图形操作方面的api,基本上还是基于命令行执行的。那么这个类的出现主要是方便用户在命令行使用过程中减少工作量,暂时只能理解到这一点好处,也不知道说错了没有。 比如说看下samples中的一个类中,main函数前定义了一个keys指针 const c... 阅读全文
posted @ 2012-04-15 18:26 tornadomeet 阅读(12687) 评论(3) 推荐(0) 编辑
前景检测算法_1(codebook和平均背景法)
摘要:前景分割中一个非常重要的研究方向就是背景减图法,因为背景减图的方法简单,原理容易被想到,且在智能视频监控领域中,摄像机很多情况下是固定的,且背景也是基本不变或者是缓慢变换的,在这种场合背景减图法的应用驱使了其不少科研人员去研究它。 但是背景减图获得前景图像的方法缺点也很多:比如说光照因素,遮挡因素,动态周期背景,且背景非周期背景,且一般情况下我们考虑的是每个像素点之间独立,这对实际应用留下了很大的隐患。 这一小讲主要是讲简单背景减图法和codebook法。一、简单背景减图法的工作原理。 在视频对背景进行建模的过程中,每2帧图像之间对应像素点灰度值算出一个误差值,在背景建模时间内算出该像素点的. 阅读全文
posted @ 2012-04-08 22:35 tornadomeet 阅读(25336) 评论(6) 推荐(2) 编辑
基础学习笔记之opencv(3):haartraining生成.xml文件过程
摘要:1.准备正负样本: 在上一讲http://www.cnblogs.com/tornadomeet/archive/2012/03/27/2420088.html 中,我们已经收集到了训练所用的正样本。下面就开始收集负样本了,负样本要求是:不能包含人脸,且图片大小也不需要归一化到正样本尺寸,只需比正样本尺寸大或者相等即可。建议负样本用灰度图,加快训练速度,且负样本一定不能重复,要增大负样本的差异性。 这里我采用的负样本是用的是weizmann团队http://www.wisdom.weizmann.ac.il/~vision/Seg_Evaluation_DB/dl.html 网站上的图像分割数 阅读全文
posted @ 2012-03-28 11:28 tornadomeet 阅读(42467) 评论(58) 推荐(1) 编辑
基础学习笔记之opencv(2):haartraining前将统一图片尺寸方法
摘要:总所周知,机器学习前要训练很多数据,一直感觉训练数据是个很神圣的东西,到底怎么训练呢?头脑一直有这么个疑问,但一直没时间去体验。因此最近在学adaboost算法,就要学会怎样训练出一个.xml文件了。方法是相同的,用过一次,以后的训练过程就差不多了。 只是打算进行简单的人脸数据训练,而是在网上下载了yale大学的人脸数据库,由耶鲁大学计算视觉与控制中心创建,包含15位志愿者的165张图片,包含光照,表情和姿态。下载网址为:http://cvc.yale.edu/projects/yalefaces/yalefaces.html。图片如下所示:(右下角是我的系统透明主题的青花瓷照片,别惊讶怎么. 阅读全文
posted @ 2012-03-27 20:10 tornadomeet 阅读(23818) 评论(27) 推荐(6) 编辑
基础学习笔记之opencv(1):opencv中facedetect例子浅析
摘要:人脸检测一种主流的方法就是类haar+adaboosting,opencv中也是用的这种方法。这种方法可以推广到刚性物体的检测,前提是要训练好级联分类器(比如说用类haar特征),一旦训练数据弄好了,直接调用opencv中的类CascadeClassifier,用它的几个简单的成员函数就可以完成检测功能。所以说用起来还是很简单的。下面就是用的opencv中自带的samples中的facedetect例子。 当然,源例子考虑到了摄像头,视频,图片多种情况,还有很多出错处理的表达。这里我讲其代码都省略了,因为看起来不是特别简洁。否则还需要用命令行输入,比如说如下图: 要输入的东西比较多,如果一旦. 阅读全文
posted @ 2012-03-22 11:20 tornadomeet 阅读(45531) 评论(33) 推荐(2) 编辑
opencv源码解析之(4):GaussianBlur()
摘要:这一节来真正进入opencv的源码分析中,本次分析的函数是GaussianBlur(),即高斯滤波函数。在前前面博文《opencv源码解析之滤波前言2》:http://www.cnblogs.com/tornadomeet/archive/2012/03/05/2379921.html中已经阐述了这个函数的用法,即: 其函数声明为: void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT ) ; 功能. 阅读全文
posted @ 2012-03-10 22:53 tornadomeet 阅读(35822) 评论(12) 推荐(5) 编辑
opencv源码解析之(3):特征点检查前言1
摘要:因为最近准备看特征点检查方面的源码,而其中最著名的算法就是sift和surf。因此这次主要是学会怎样使用opencv中的sift和surf函数来检测特征点和描述特征点,以及怎样使用其算法来进行特征点匹配。庆幸的是,sift算法虽然是专利,但是在opencv的努力下也获得了作者的允许,将其加入了新版本的opencv中了。使用环境:opencv2.3.1+vs2010功能:找出2幅图中特征点,并将其描述出来,且在2幅中进行匹配。2幅图内容相同,但是经过了曝光,旋转,缩放处理过。首先来看sift算法函数的使用。工程代码:// sift_test.cpp : 定义控制台应用程序的入口点。#inclu. 阅读全文
posted @ 2012-03-08 10:46 tornadomeet 阅读(28021) 评论(32) 推荐(1) 编辑
opencv源码解析之(2):滤波前言2
摘要:在上次的opencv源码解析之滤波前言1中,按照opencv_tutorials.pdf中的滤波部分试了下常用的4种滤波器的使用方法。在opencv的C++中,这4个函数分别为:blur,GaussianBlur,meidaBlur,bilateralFilter.下面就这几个函数在opencv中的功能,以及参数做个介绍:均值滤波:其函数声明为:void blur(InputArray src, OutputArray dst, Size ksize, Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT )。这个函数在上一节中介绍. 阅读全文
posted @ 2012-03-05 09:11 tornadomeet 阅读(7082) 评论(1) 推荐(1) 编辑
opencv源码解析之(1):滤波前言1
摘要:对图像的滤波和平滑是出来数字图像处理和计算机视觉非常重要的一个步骤,那么什么是滤波呢?滤波用编程语言到底是怎么实现的呢?效果怎么样?本人打算学习opencv有关滤波的源码,进一步加强图像处理的实践能力。 首先我们利用opencv中常见的4种滤波算法函数来实现滤波功能,让大家有个感性的认识。这4中滤波分别是均值滤波,高斯滤波,中值滤波,双边滤波。利用opencv2.3.1的参考手册中关于opencv中滤波的介绍,我这里采用的是VS2010+opencv2.3.1,新建了一个filter_test控制台工程。其源码和注释如下://包含图像处理和界面处理的头文件#include "stda 阅读全文
posted @ 2012-03-03 12:03 tornadomeet 阅读(10130) 评论(6) 推荐(1) 编辑

上一页 1 2 3

阿萨德发斯蒂芬