opencv学习笔记
文章平均质量分 77
xiaoliu1204
这个作者很懒,什么都没留下…
展开
-
cvDrawContours绘制轮廓
在图像中绘制外部和内部的轮廓。void cvDrawContours( CvArr *img, CvSeq* contour, CvScalar external_color, CvScalar hole_color, int max_level, int thickness=1,转载 2014-07-14 16:26:19 · 859 阅读 · 0 评论 -
Opencv中在图片上显示文本
1、cvPutText函数(在图像中加入文本)void cvPutText( CvArr* img, const char* text, CvPoint org, const CvFont* font, CvScalar color );img :输入图像。text :显示字符串。 org:第一个字符左下角的坐标。 font :字体结构初始化。 color :文本的字体转载 2014-07-10 10:32:52 · 894 阅读 · 0 评论 -
opencv 牛人博客,参考网站
(转自http://blog.csdn.net/gykimo/article/details/8638982)原文地址:blog.csdn.net/carson2005以下链接是本人整理的关于计算机视觉(ComputerVision, CV)相关领域的网站链接,其中有CV牛人的主页,CV研究小组的主页,CV领域的paper,代码,CV领域的最新动态,国内的应用情况等等。转载 2014-07-28 17:59:38 · 1766 阅读 · 0 评论 -
OPENCV混合高斯模型原理
(转自:) 混合高斯模型跟高斯变量之和看起来有一点像, 注意不要把它们弄混淆了. 混合高斯模型给出的概率密度函数实际上是几个高斯概率密度函数的加权和:其中 . 定义事件 , 则 . 据此可以产生服从上述混合高斯概率密度分布的样本.混合分布的均值为方差为计算均值和方差的公式不仅适用于几个(多维)高斯分布混合的情况,转载 2014-07-28 17:23:55 · 7168 阅读 · 0 评论 -
opencv 平均背景模
#include "highgui.h"#include "cv.h"#include "cxcore.h" /*为不同临时图像和统计属性图像创建指针*/ //三通道float图像IplImage *IavgF,*IdiffF,*IprevF,*IhiF,*IlowF; IplImage *Iscratch,*Iscratch转载 2014-07-28 20:39:15 · 1975 阅读 · 0 评论 -
Kalman滤波器的详细使用和讲解
这两天一直在研究Kalman滤波器,刚开始开的时候对代码很不理解,但是没办法,谁叫哥就是学这个的呢,所以硬着头皮死看代码,以及看了一些关于对kalman滤波器的使用的博文,现在已经大致掌握kalman滤波器的使用步骤。首先我们要了解kalman滤波器的基本知识,这样在之后的介绍能起到抛砖引玉的作用,当然还是和之前笔者关于opencv的博文一样,对于kalman的具体数学推导过程不做介绍,不转载 2014-07-09 16:08:35 · 1331 阅读 · 0 评论 -
Kalman 介绍(学习人家的资料收集方法)
一些网络资料 关于Kalman滤波器的理论,其数学公式太多,大家可以去查看一些这方面的文献.下面这篇文章对Kalman滤波做了个通俗易懂的介绍,通过文章举的例子可以宏观上理解一下该滤波器,很不错,推荐一看: http://www.cnblogs.com/feisky/archive/2009/11/09/1599247.html, 他的另一篇博客http://www.cnblogs.c转载 2014-07-10 16:11:34 · 719 阅读 · 0 评论 -
直方图结构体:CvHistogram
在上个示例程序中,用到了直方图结构体:CvHistogram,现在来具体的研究一下这个结构。定义:typedef struct CvHistogram{ int type; CvArr* bins; float thresh[CV_MAX_DIM][2]; float** thresh2;转载 2014-07-08 10:27:36 · 667 阅读 · 0 评论 -
cvRandSetRange() cvRand()
cvRandSetRange()修改CvRandState数据结构的参数内容,均匀分布的话可以每个信道的上下界常态分布可以修改每个通道的平均数,标准偏差.cvRandSetRange(CvRandState数据结构,均匀分布上界,均匀分布下界,目标信道数据)cvRandSetRange(CvRandState数据结构,常态分布平均数,常态分布标准偏差,目标信道数据)转载 2014-07-11 15:56:34 · 1328 阅读 · 0 评论 -
反向投影(有助于理解camshift)
图像的反向投影图是用输入图像的某一位置上像素值(多维或灰度)对应在直方图的一个bin上的值来代替该像素值,所以得到的反向投影图是单通的。用统计学术语,输出图像象素点的值是观测数组在某个分布(直方图)下的概率。 其中b(xi)表示在位置xi上像素对应的直方图第b(xi)个bin,直方图共m个bin,qu表示第u个bin的值。还是以例子说明(1)例如灰度图像如下转载 2014-07-30 22:33:12 · 557 阅读 · 0 评论 -
opencv 数字图像直方图
灰度直方图是数字图像中最简单且有用的工具,这一篇主要总结OpenCV中直方图CvHistogram的结构和应用。灰度直方图的定义灰度直方图是灰度级的函数,描述图像中该灰度级的像素个数(或该灰度级像素出现的频率):其横坐标是灰度级,纵坐标表示图像中该灰度级出现的个数(频率)。一维直方图的结构表示为高维直方图可以理解为图像在每个维度上灰度级分布的直方图。转载 2014-07-30 16:16:15 · 483 阅读 · 0 评论 -
cvCopy与cvCloneImage的区别
cvCopy与cvCloneImage的区别/* Copies source array to destination array */CVAPI(void) cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask CV_DEFAULT(NULL) );/* Creates a转载 2014-07-30 18:01:11 · 367 阅读 · 0 评论 -
CvMat操作
CvMat操作分配释放矩阵空间 综述:OpenCV有针对矩阵操作的C语言函数. 许多其他方法提供了更加方便的C++接口,其效率与OpenCV一样.OpenCV将向量作为1维矩阵处理.矩阵按行存储,每行有4字节的校整. 分配矩阵空间:CvMat* cvCreateMat(int rows, int cols, int type);type: 矩转载 2014-07-31 08:57:08 · 371 阅读 · 0 评论 -
如何求一帧二值图像上最左最右最上最下的坐标点,欢迎各位批评指正
最近在做毕业,需要求出一帧二原创 2014-07-15 18:57:09 · 2391 阅读 · 0 评论 -
kalman滤波器例子
一、卡尔曼滤波器的理论解释http://blog.csdn.net/lindazhou2005/article/details/1534234(推荐)二、代码中一些随机数设置函数,在opencv中文网站上没有查到:cvRandInit()初始化CvRandState数据结构,可以选定随机分布的种类,并给定它种子,有两种情形cvRandInit(CvRandState转载 2014-08-01 10:36:26 · 788 阅读 · 0 评论 -
OpenCV中CvFont的定义和操作
主要是cvGetTextSize(text, &font, &text_size, &baseline); cvPoint(2,text_size.height+baseline) 这样写出的字才对齐得更好些。 CvPoint pt; pt.x = point.x - text_size.width/2; //这样的设置为字体(左右)居中对齐转载 2014-07-10 10:28:47 · 1424 阅读 · 0 评论 -
opencv 光流法详解
一.基本概念光流的概念是Gibson于1950年提出的。所谓光流是指图像中模式运动的速度,光流场是一种二维(2D)瞬时速度场,其中二维速度向量是可见的三维速度向量在成像平面上的投影。光流法是把检测区域的图像变为速度的矢量场,每一个向量表示了景物中一个点在图像中位置的瞬时变化。因此,光流场携带了有关物体运动和景物三维结构的丰富信息,通过对速度场(光流场)的分析可以判断在检测区域内车辆的有无。转载 2014-07-25 22:02:43 · 3619 阅读 · 0 评论 -
Camshift原理及opencv实现
Camshift原理camshift利用目标的颜色直方图模型将图像转换为颜色概率分布图,初始化一个搜索窗的大小和位置,并根据上一帧得到的结果自适应调整搜索窗口的位置和大小,从而定位出当前图像中目标的中心位置。分为三个部分:1--色彩投影图(反向投影):(1).RGB颜色空间对光照亮度变化较为敏感,为了减少此变化对跟踪效果的影响,首先将图像从RGB空间转换到HSV空间。(2).然转载 2014-07-06 23:15:00 · 575 阅读 · 0 评论 -
opencv 读取像素值
话不多说,新手在不断学习,刚刚看见读取每个像素点值很是好奇。#include #include using namespace std;int main(){IplImage* src = cvLoadImage("e:/11.bmp",CV_LOAD_IMAGE_COLOR);//方法一:CvScalar s = cvGet2D(src,200,201转载 2014-07-16 10:05:21 · 788 阅读 · 0 评论 -
在三通道彩图和单通道灰度图中画矩形框
今天学习了如何在esq原创 2014-07-16 16:32:13 · 1915 阅读 · 0 评论 -
图像和轮廓的匹配(hu矩)
图像和轮廓的匹配(hu矩) (1)hu矩的概念,我也总结了但是我不过多的阐述,因为我也不是太理解,只知道它具有平移,旋转,尺度不变性,详细见别人的这篇blog:http://blog.csdn.net/wrj19860202/article/details/6327094(2)opencv 的实现——计算hu矩普通矩和中心矩的计算 Void cvMom转载 2014-07-16 20:03:47 · 1145 阅读 · 0 评论 -
利用opencv求图像重心
转自:http://blog.csdn.net/lxiaoxiaot/article/details/6539834 用cvMoments函数时有一个参数是CvMoments * 结构,但是需要对这个结构初始化,也就是申请内存,用moment = (CvMoments*)malloc( sizeof(CvMoments) 就可解决,这个图像和序列等得初始化是不一样不转载 2014-07-16 17:25:13 · 5382 阅读 · 0 评论 -
opencv 读取视频中的每一帧
// test3.cpp//// 该程序实现视频和图片的相互转换.// Image_to_video()函数将一组图片合成AVI视频文件.// Video_to_image()函数将AVI视频文件读入,将每一帧存储为jpg文件.//////////////////////////////////////////////////////////////////////////转载 2014-07-18 21:54:12 · 4223 阅读 · 0 评论 -
怎样将数字转换为字符串?
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数将整数转换为字符串的一个例子:# include # include void main (void);void main (void){ int num = 100; char str[25]; itoa(num, st转载 2014-07-18 21:10:00 · 1825 阅读 · 0 评论 -
七种常见阈值分割代码(Otsu、最大熵、迭代法)
本文转自:http://www.cnblogs.com/skyseraph/archive/2010/12/21/1913058.html主程序(核心部分) 代码1 2 3 4 IplImage* binaryImg = cvCreateImage(cvSize(w, h),IPL_DEPTH_8U, 1);5 cvThreshold(smo转载 2014-07-22 21:12:04 · 2181 阅读 · 0 评论 -
OpenCV读取AVI文件
问题:为什么我的电脑支持AVI或者能够播出AVI,但为什么使用cvCreateFileCapture函数总返回NULL呢?答案:尽管是AVI文件,但也可能使用了某种codec,例如:MJPEG Decompressor。 需要把它转换OpenCV支持的AVI文件. OpenCV支持的AVI如下:ContainerFourCCNam转载 2014-07-22 15:50:22 · 2427 阅读 · 0 评论 -
IT人士必去的十个网站
1、Chinaunix 网址:http://www.chinaunix.net/ 简介:中国最大的linux/unix技术社区。2、ITPub 网址:http://www.itpub.net/ 简介:有名气的IT技术论坛,看看它的alexa排名就知道有多火了,尤其以数据库技术讨论热烈而闻名。ITPUB论坛的前身是建立在smiling的oracle小组。3、51cto 网址:http转载 2014-07-22 20:29:37 · 513 阅读 · 0 评论 -
opencv 实现验证otsu
otsu法(最大类间方差法,有时也称之为大津算法)使用的是聚类的思想,把图像的灰度数按灰度级分成2个部分,使得两个部分之间的灰度值差异最大,每个部分之间的灰度差异最小,通过方差的计算来寻找一个合适的灰度级别 来划分。 所以 可以在二值化的时候 采用otsu算法来自动选取阈值进行二值化。otsu算法被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响。因此,使类间方差最大的分割转载 2014-07-22 20:30:53 · 521 阅读 · 0 评论 -
OpenCV的三帧差法
[cpp] view plaincopy// threeDifferent.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "highgui.h" #include "cv.h" #include "cxcore.h" #include "cvau转载 2014-07-25 10:48:15 · 809 阅读 · 0 评论 -
cvCreateHist用法
public static IntPtr cvCreateHist( int dims, int[] sizes, HIST_TYPE type, IntPtr[] ranges, int uniform)各个成员的意思结合下图来理解:dim是表示几维空间,即一般彩色图像是3通道的,dim=3;而灰度图是1通道的,dim=1sizes如上图有10转载 2014-07-07 14:50:20 · 947 阅读 · 0 评论 -
CvBox2D(转)
之前用到opencv最小外接矩形去表示一个类椭圆形的高度,特此记录备查。对给定的 2D 点集,寻找最小面积的包围矩形,使用函数:CvBox2D cvMinAreaRect2( const CvArr* points, CvMemStorage* storage=NULL ); points 点序列或点集数组 storage 可选的临时存储转载 2014-07-06 22:46:17 · 678 阅读 · 0 评论 -
camshift知识点
mean-shift 的特点是把支撑空间和特征空间在数据密度的框架下综合了起来。对图像来讲,支撑空间就是像素点的坐标,特征空间就是对应像素点的灰度或者RGB三分量。将这两个空间综合后,一个数据点就是一个5维的向量:[x,y,r,g,b]。这在观念上看似简单,实质是一个飞跃,它是mean-shift方法的基点。mean-shift方法很宝贵的一个特点就是在这样迭代计算的框架下,求得的转载 2014-08-19 11:05:04 · 889 阅读 · 0 评论