随笔分类 -  opencv学习

摘要:目的¶从真实世界中获取数字图像有很多方法,比如数码相机、扫描仪、CT或者磁共振成像。无论哪种方法,我们(人类)看到的是图像,而让数字设备来“看“的时候,则是在记录图像中的每一个点的数值。比如上面的图像,在标出的镜子区域中你见到的只是一个矩阵,该矩阵包含了所有像素点的强度值。如何获取并存储这些像素值由我们的需求而定,最终在计算机世界里所有图像都可以简化为数值矩以及矩阵信息。作为一个计算机视觉库, OpenCV 其主要目的就是通过处理和操作这些信息,来获取更高级的信息。因此,OpenCV如何存储并操作图像是你首先要学习的。Mat¶在2001年刚刚出现的时候,OpenCV基于 C 阅读全文
posted @ 2012-11-11 12:11 微雪 阅读(3192) 评论(0) 推荐(0) 编辑
摘要:openCv学习笔记(二)—cv::Mat学习由于在写上一篇图像的数据结构时,发现自己只知道CvMat,竟然还有Mat数据结构,真是无知了,看了这么多程序,貌似没有看到这个结构。有可能那些程序都是些老版本的例子,这是在2.0以后加上的,所以我也得紧跟呀!以下是自己的学习心得。。。。一、Mat简介 在2001年刚刚出现的时候,OpenCV基于 C 语言接口而建。为了在内存(memory)中存放图像,当时采用名为 IplImage 的C语言结构体,时至今日这仍出现在大多数的旧版教程和教学材料。但这种方法必须接受C语言所有的不足,这其中最大的不足要数手动内存管理,其依据是用户要为开辟和销毁内存负责。 阅读全文
posted @ 2012-10-10 14:17 微雪 阅读(625) 评论(0) 推荐(0) 编辑
摘要: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( &mat );方式二、连接现有数组式:double a[] = { 1, 2, 3, 4,5, 6, 7, 8,9, 10, 11, 12 };CvMat mat = cvMat( 3, 4, CV_64FC1, a ); // 阅读全文
posted @ 2012-08-22 15:46 微雪 阅读(3568) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.csdn.net/xiaowei_cqu/article/details/7558657在《访问图像中每个像素的值》中我们介绍了存储图像的结构体IplImage的数据结构。多通道字节/浮点型图像中存储了每个像素RGB三信道的值。最近在做的项目中需要提取图像ROI区域RGB的平均值,发现有一个cvAvg函数:CvScalarcvAvg(constCvArr*arr,constCvArr*mask=NULL);可以独立计算数组每个通道的平均值,非常方便。所以用如下方式即可达到效果:CvScalaravgChannels=cvAvg(img);doubleavgB=av 阅读全文
posted @ 2012-08-17 09:24 微雪 阅读(3916) 评论(0) 推荐(0) 编辑
摘要:需要自己写颜色空间转换的小程序,其中涉及到LOG运算及atan运算,所以在运算过程中用到double类型数据,但最后许转换为IPL_DEPTH_8U类型,故申请了一幅图像IplImage* hue64f = cvCreateImage( cvGetSize(src),IPL_DEPTH_64F, 1 );来存储中间变量。但是问题也随之而来。问题1:按照公式计算完,然后再应用ConvertScale转换数据类型,但转换结果都是0;然后从头开始查找错误问题二:数据中存在1.#IND,1.#INF类似数据;原因:1)像素值为0计算LOG值为负无穷;2)在计算除法时注意判断分母是否为0,如果接近于0也 阅读全文
posted @ 2012-08-13 10:52 微雪 阅读(4125) 评论(0) 推荐(0) 编辑
摘要:我们在计算机视觉相关的实验中都需要视频与图片序列之间相互转换,在平时的实验中,经常需要将视频保存为一帧一帧的图片,以获取实验结果;另一方面,很多标准的算法测试数据库都是图片序列(文件名以帧号+图片扩展名),我们可能需要将其转换为视频,因此视频与图片之间的转换是很常见的操作。在网上找到比较好的测试程序,一方面将其封装为函数,方便调用;另一方面,视频转图片可以任意设定图片输出目录,函数会自动创建相关目录;图片序列转视频可以设定更多的参数,也就可以更好的控制,而且可以自行设定视频输出的目录,函数自动检测并创建相关目录。适合windows平台+OpenCV;代码如下:View Code 1 // .. 阅读全文
posted @ 2012-08-11 10:41 微雪 阅读(8871) 评论(0) 推荐(0) 编辑
摘要:本人按以下教程安装VS2010,可是在③ 在Debug下,选择Solution Explorer里的 Solution OpenCV,点右键,运行"Rebuild Solution";如编译无错误,再选择INSTALL项目,运行"Build"。这一步时,总是出现Rebuild solution时总出现error TRK0005: Failed to locate: "CL.exe".编译不能成功,但在VS2010安装文件夹里是有CL.exe的,不知道什么原因。。在这个博客里,看到有解决方案 http://blog.sina.com.c 阅读全文
posted @ 2012-08-06 10:19 微雪 阅读(4494) 评论(0) 推荐(0) 编辑
摘要:IplImage *im8 = cvLoadImage(argv[1]);IplImage *im32 = cvCreateImage(cvSize(im8->width, im8->height), 32, 3);cvConvertScale(im8, im32, 1/255.); 阅读全文
posted @ 2012-07-31 14:45 微雪 阅读(9653) 评论(0) 推荐(0) 编辑
摘要:1. 写yml矩阵代码: 全选#include "cxcore.h"int main( int argc, char** argv ){ CvMat* mat = cvCreateMat( 3, 3, CV_32F ); CvFileStorage* fs = cvOpenFileStorage( "example.yml", 0, CV_STORAGE_WRITE ); cvSetIdentity( mat ); cvWrite( fs, "A", mat, cvAttrList(0,0) ); cvReleaseFileStora 阅读全文
posted @ 2012-07-31 14:44 微雪 阅读(6497) 评论(0) 推荐(0) 编辑
摘要:遇到这种情况的解决方法把代码中的ReadHuge换成Read、WriteHuge换成Write即可。原因是VC++2005及后续VC版本中的CFile没有ReadHuge和WriteHuge成员函数,只在VC6中的CFile才有,不过ReadHuge()函数已被Read()函数代替,WriteHuge()函数已被Write()函数代替。 阅读全文
posted @ 2012-07-26 11:07 微雪 阅读(535) 评论(0) 推荐(0) 编辑
摘要:灰度直方图介绍:http://hi.baidu.com/wen_sift/blog/item/83fd56ca3e6b1b36b600c887.html灰度直方图均衡化:http://hi.baidu.com/wen_sift/blog/item/b808fd0d9f67392b6b60fb54.html利用OpenCV计算并绘制灰度直方图:View Code #include <cv.h>#include <highgui.h>#pragma comment( lib, "cv.lib" )#pragma comment( lib, "c 阅读全文
posted @ 2012-07-25 16:45 微雪 阅读(9872) 评论(0) 推荐(0) 编辑
摘要:先看几张效果图吧效果图:可以直接测试的代码:添加头文件:// Saliency.h: interface for the Saliency class.//////////////////////////////////////////////////////////////////////////===========================================================================// Copyright (c) 2009 Radhakrishna Achanta [EPFL] //====================... 阅读全文
posted @ 2012-07-24 19:27 微雪 阅读(4756) 评论(1) 推荐(0) 编辑
摘要:刚才又找到一篇文章,贴出来分享:http://blog.csdn.net/duliang_wu/article/details/7317740相信许多朋友多用过了opencv2.3版本中的混合高斯模型,大部分人可能多碰到了这样一个问头,2.3版本中的,混合高斯模型,不能读取模型建立的背景。我上网搜了一下,发现了解决方法(这篇文章算不上原创啦)。这是中文提示的网站http://blog.pzxbc.com/?p=176,该文中所提及的解决方法来自外国网站https://code.ros.org/trac/opencv/ticket/317。接下来就是我在vs2010下编好的代码,一定能跑!#in 阅读全文
posted @ 2012-07-23 19:21 微雪 阅读(1522) 评论(0) 推荐(0) 编辑
摘要:sample bgfg_segm.cpp don't display background in 2.1.0 versionThe following function fills model->background image when model is MOG (cvCreateGaussianBGModel). I hope this helps those who encounter this problem in the meanwhiletypedef struct MyCvGaussBGValues{ float match_sum; float weight; . 阅读全文
posted @ 2012-07-23 18:13 微雪 阅读(465) 评论(0) 推荐(0) 编辑
摘要:主要是拷贝的程序问题,有错误的空字符0x3000是汉语的空格,也就是全角空格,相当于一个汉字,但你又看不见它。你知道的,像逗号,有半角(,)和全角(,)之分的,其实空格也有。0x3000是全角的空格,0x20是半角的空格。最好把这个语句的后面空白部分,都删除掉,免得有不可见的全角空格。 阅读全文
posted @ 2012-07-22 10:18 微雪 阅读(2971) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.csdn.net/wqvbjhc/article/details/5485242混合高斯模型原理 混合高斯模型跟高斯变量之和看起来有一点像, 注意不要把它们弄混淆了. 混合高斯模型给出的概率密度函数实际上是几个高斯概率密度函数的加权和: 其中 . 定义事件 , 则 . 据此可以产生服从上述混合高斯概率密度分布的样本.混合分布的均值为 方差为 计算均值和方差的公式不仅适用于几个(多维)高斯分布混合的情况, 还适用于非高斯分布的情况.高斯变量之和就没什么好说的了, 几个高斯变量之和是一个新的高斯变量.高斯背景模型在 运动检测中的应用 原理 : 高斯模型就是用高斯概.. 阅读全文
posted @ 2012-07-22 09:38 微雪 阅读(9273) 评论(0) 推荐(1) 编辑
摘要:转自:http://blog.csdn.net/wqvbjhc/article/details/54966321. CV_FUNCNAME 定义变量 cvFuncName存放函数名,用于出错时可以报告出错的函数 __FILE__ C语言中的宏,CV_Error中经常用到,说明出错的函数所在源文件名 __LINE__ C语言中的宏,CV_Error中经常用到, 说明出错位置的函数 cxerror.h 中[cpp] view plaincopyprint?/*CV_FUNCNAMEmacrodefinesicvFuncNameconstantwhichisusedbyCV_ERRORmacro*/ 阅读全文
posted @ 2012-07-22 09:00 微雪 阅读(517) 评论(0) 推荐(0) 编辑
摘要:视频读写概述Wikipedia,自由的百科全书对视频进行读写,可使用OpenCV提供的CvCapture和CvVideoWriter。在Windows平台下,OpenCV以前提供的读写功能采用VFW,效率低下且有些格式支持不好。而 OpenCV 2.0 内置了videoInput Library,可以自动在VFW和DirectShow间切换Windows下从摄像头采集图像请参考:Shiqi Yu编写的CCameraDS类(勿需安装庞大的DirectX,简洁,推荐!)hardy_ai编写的ARFrameGrabber类Theodore Watson编写的videoInput Library(勿需 阅读全文
posted @ 2012-07-21 15:30 微雪 阅读(4609) 评论(0) 推荐(0) 编辑
摘要:转载自http://hi.baidu.com/dbzhang800/item/1dd5621596b52f25f7625c411. Mingw 相关的 videoInput 的问题Mingw4.4 编译OpenCV2.1 时,编译失败:OpenCV2.1.0/src/highgui/http://www.cnblogs.com/3rdparty/lib/libvideoInput.a(videoInput.o):videoInput.cpp:(.text+0xee):undefined reference to`__gxx_personality_sj0'根源:问题出在 libvide 阅读全文
posted @ 2012-07-20 14:43 微雪 阅读(667) 评论(0) 推荐(0) 编辑
摘要:转自http://hi.baidu.com/www_djh/blog/item/6ff6c063b060d454eaf8f85e.html/*****************************************************************************/CamShift算法,即"Continuously Apative Mean-Shift"算法,是一种运动跟踪算法。它主要通过视频图像中运动物体的颜色信息来达到跟踪的目的。我把这个算法分解成三个部分,便于理解:1) Back Projection计算2) Mean Shift算法3) 阅读全文
posted @ 2011-10-11 23:08 微雪 阅读(1279) 评论(0) 推荐(0) 编辑