- 博客(61)
- 资源 (18)
- 收藏
- 关注
转载 位运算符(一):C/C++位运算符
位运算是指按二进制进行的运算。在程序中,常常需要处理二进制位的问题。C/C++语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。 在实际应用中,建议用unsigned整型操作数,因为带符号操作数可能因为不同机器结果不同。 c++和c的位操作运算符完全相同,但c++中增加了bitset标准库来支
2013-12-11 08:26:02
1130
原创 VS 2010下一次性配置opencv(32位和64位相同)
1、下载OpenCV2.x.x superpackage(地址为:http://wiki.opencv.org.cn/index.php/%E9%A6%96%E9%A1%B5) 2、 配置环境变量 我的电脑--->右键--->属性--->高级--->环境变量--->在用户变量里,新建path和OPENCV两个项,如下图所示:
2013-12-10 10:07:47
2923
原创 Visual Studio 2010 编译Duilib源码报错: error C2371: “IDispatchEx”: 重定义;不同的基类型 解决方法
通过SVN从官网下载更新代码,然后用Visual Studio 2010编译报错如下: 解决方法如下: UIFlash.h 行:#import "..\Utils/Flash11.tlb" raw_interfaces_only, named_guids 改为: #import "..\Utils/Flash11.tlb" raw_interfa
2013-12-10 10:06:17
2883
原创 常量指针和指针常量
使用一个指针时涉及到两个对象:该指针本身和被它所指的对象。将一个指针的声明应const“预先固定”将使那个对象而不是使这个指针成为常量。要讲指针本身而不是被指对象声明为常量。我们必须使用声明运算符*const,而不能简单的使用const。举例:void fl(char *p){ char s[] = "Gold"; const char *pc = s; //指向常量
2013-12-10 10:04:13
860
原创 strlen函数实现的几种方法
常见的一个笔试题:不使用中间变量求const字符串长度,即实现求字符串长度库函数strlen函数。函数接口声明如下:int strlen(const char *p); 在字符串中通常可以利用最后一个结束符’\0’,但此处参数为const,只读,那么我们不能打他的主意。 函数运行过程中不占用内存基本不可能,除非都使用了寄存器。“不使用中间变量”只是说程序员不能显示的申请
2013-12-10 10:00:54
1426
原创 为Visual Studio 2012文本编辑框添加背景图片
首先,弄张效果图看看。下面介绍具体操作方法。1、打开vs 2012,选择“工具”->“扩展和更新",在”联机“里面搜索”text background“,搜索结果中找到”Text Editor Background Vs 2012“,然后,安装重启VS2012.。2、然后选择“工具”->“选项”,找到“Text Editor Background ”,下图所示:3、
2013-11-15 11:20:01
3639
原创 OpenCV双摄像头摄像头定标与立体匹配遇到的问题
进过我的不懈努力,OpenCV双摄像头摄像头定标与立体匹配这个程序算是完成了,下面介绍下过程中遇到的问题。1、OpenCV棋盘格的定标问题。奇了怪了,每次重新定标,结果都是差异很大,网上查资料,说是MatLab标定箱效果比较好,这是下载地址:http://www.vision.caltech.edu/bouguetj/calib_doc/,使用方法参见此帖子;http://blog.lehu.
2013-11-14 15:00:13
2523
原创 reprojectImageTo3D函数讲解
函数名称:reprojectImageTo3D函数原型:void reprojectImageTo3D(InputArray disparity,OutputArray _3dImage,InputArray Q, bool handleMissingValues=false, int ddepth=-1 )函数作用:根据一组差异图像构建3D空间参数说明:disparity
2013-11-14 11:30:26
21504
12
转载 Matlab标定工具箱使用的一些注意事项
最近使用了Matlab标定工具箱来与OpenCV的StereoCalibration的结果进行对比。现把在使用过程中,遇到的一些问题,进行了总结:(详细说明请参见程序主页http://www.vision.caltech.edu/bouguetj/calib_doc/)一般的标定过程:选择图像读取方式(标准,还是一副一副的读),如果选择一次性将文件读入内存,则在后面输入文件基本名称和文件格
2013-11-13 10:36:44
2423
原创 Matlab摄像头标定得出的参数保存为xml
最近在做双摄像头的立体匹配,发现OpenCV定标效果不如MatLab的效果,于是用MatLab标定箱做标定,将得到的结果保存为xml,然后,提供给opencv使用。 MatLab标定箱做标定得到的结果如下图所示: 将结果保存为xml代码如下: // SaveMatLabCalibParam.cpp : 定义控制台应用程序的入口点。//#include "s
2013-11-08 20:03:51
8214
4
转载 给VS2008/VS2010 MFC项目添加启动画面
在VC6.0时代,我们通过在MFC工程中插入Splash组件来简单方便的实现这个功能,但在VS2008以后就没有了这个功能,所以如果想给自己的程序添加一个显示Logo的启动画面,就需要自己添加代码来实现,参考了下VC6.0中这个Splash组件添加后的代码,就很容易在自己的项目里实现这个功能。如下图。 首先,在菜单的“项目”中选择“类向导”,生成一个启动画面的Splash类
2013-11-04 07:53:16
1362
转载 OpenCV矩阵运算
一、矩阵Mat I,img,I1,I2,dst,A,B;double k,alpha;Scalar s;1.加法I=I1+I2;//等同add(I1,I2,I);add(I1,I2,dst,mask,dtype);scaleAdd(I1,scale,I2,dst);//dst=scale*I1+I2;2.减法absdiff(I1,I2,I);//I=|I1-I2|;A-B;A-
2013-10-28 15:18:29
1362
原创 三维建模的相关网站或者博客参考集锦
下面是我在查找三维建模相关资料,总结的一些比较好或者有用三维建模方面的相关博客或者网站,供大家参考一下。 1、OpenCV学习笔记(16)双目测距与三维重建的OpenCV实现问题集锦(一)图像获取与单目定标 http://blog.youkuaiyun.com/chenyusiyuan/article/details/5961769
2013-10-24 14:26:48
1440
原创 关于VS 2010 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏解决方案
我的电脑了原来装了VS 2010了,今天下载VS 2012装了上去,然后建了个MFC工程,运行了一下。然后打开原来VS 2010项目,一运行,就报错了:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏。 首先,说明一下报错的原因(微软的解释),地址:http://support.microsoft.com/kb/320216/zh
2013-10-24 14:23:19
1665
转载 双摄像头测距的opencv实现
原文地址:(转)双摄像头测距的opencv实现作者:outman 虽然最近注意力已经不可遏制地被神经科学、大脑记忆机制和各种毕业活动吸引过去了,但是还是觉得有必要把这段时间双目视觉方面的进展总结一下。毕竟从上一篇博文发表之后,很多同仁发E-mail来与我讨论,很多原来的疑团,也在讨论和一步步的试验中逐渐解决了。 开篇之前,首先要感谢maxwellsdemon
2013-09-25 10:32:19
3738
原创 图像代数运算:图像相加
代数运算-图像相加,就是对两幅图像的点之间进行加的运算。四种运算相应的公式为: s(x,y) = f(x,y) + g(x,y) 图像相加常用来求平均值去除addtive噪声或者实现二次曝光(double-exposure)。
2013-09-16 11:32:08
6245
1
原创 OpenCV导入图像显示到MFC的PICTURE控件
步骤1:添加PICTURE控件,设置控件属性如下图所示:步骤2:将CvvImage.h和CvvImage.cpp添加到工程中。下载地址:
2013-09-10 11:27:23
1442
转载 图像叠加 给照片加水印
C++: void Mat::copyTo(OutputArray m) constC++: void Mat::copyTo(OutputArray m, InputArray mask) const这个函数可以复制图像到另一个图像或矩阵上,可选参数是掩码由于叠加的图像大小不一定相等,比如我们这里把一张小照片加到一张大照片上我们可以在大照片上设置一个和小照片一样大的感兴趣
2013-09-10 10:52:16
1739
原创 图像内插-最近邻内插法
一、图像内插-最近邻内插法1、数学原理 当一幅二维数字图像从源图像N*M被放为(j*N) * (k*M)目标图像是,参照数学斜率计算公式 必然有: (X1 – Xmin)/(Xmax - Xmin) = (Y1 - Ymin)/(Ymax-Ymin) 当Xmin 和 Ymin均为从零开始的像素点时,公式可以简化为:X=Y1 (Xmax/Yma
2013-08-31 09:12:52
16217
原创 关于Kinect根据深度图对齐彩色图抠人比彩色图像人大的问题
我根据Kinect自带的那个绿色抠人Demo,大家有没有发现抠出来的人比彩色图像中人变大了,该Demo是根据一个函数NuiImageGetColorPixelCoordinateFrameFromDepthPixelFrameAtResolution来对齐,导致我根据帧差法得到的前景图无法与抠出人的大小对齐,因此无法修复抠出来人边缘的抖动。下面,我介绍一个函数MapColorFrameToDept
2013-08-08 16:50:18
5121
转载 关于gluPerspective(解释得很好)
函数原型gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)首先得设置gluPerspective,来看看它的参数都表示什么意思fovy,这个最难理解,我的理解是,眼睛睁开的角度,即,视角的大小,如果设置为0,相当你闭上眼睛了,所以什么也看不到,如果为180,那么可以认为你的视界很广阔,
2013-08-05 18:06:53
1812
2
原创 OpenCV2 轮廓处理 多边形逼近
一、说明 轮廓的多边形逼近指的是:使用多边形来近似表示一个轮廓。 多边形逼近的目的是为了减少轮廓的顶点数目。 多边形逼近的结果依然是一个轮廓,只是这个轮廓相对要粗旷一些。 函数原型:void approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed)
2013-08-05 18:03:40
8482
原创 OpenCV 2 轮廓检测与显示
一、函数讲解 1、findContours 函数说明:查找二值图像中的轮廓 函数原型:void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset=Point
2013-08-05 15:27:23
3103
原创 程序开机自启动的方法
方法一: 左键单击开始按钮--打开--程序--启动,然后将你要运行的程序的快捷方式放进去就可以了。(注意:是快捷方式,不是exe) 方法二: bat文件启动,右键单击开始按钮--打开--程序--启动,然后将 bat文件的快捷方式放进去就可以了。 内容:ping 127.0.0.1 -n 5(程序启动时间) start Correcti
2013-07-26 14:36:02
946
原创 Kinect获取彩色图像(Kinect + OpenCV 2.3.0)
1.开发工具:Visual Studio 2010 + OpenCV2.3.0 使用的是Kinect SDK for Windows 1.7 版本
2013-07-08 13:58:23
2415
原创 各种字符类型转换
各种字符类型转换注意事项:默认的编译环境是Unicode环境1.CString转int|int转CString-----------------------------------------------------------------------------------------------------------------------------------情况一:CStrin
2013-07-05 10:17:39
1400
原创 API学习--NUI_IMAGE_FRAME
NUI_IMAGE_FRAME Structure(结构体)结构体名字:NUI_IMAGE_FRAME结构体描述:包含一个深度或者彩色图像帧的信息结构体原型:typedef struct _NUI_IMAGE_FRAME { LARGE_INTEGER liTimeStamp; //最近帧的时间戳 表明时间已经过去 因为最近一次调用
2013-07-05 10:16:08
2766
原创 OpenCV轮廓---多边形逼近
这是一个轮廓的多边形轮廓逼近函数,这个函数用指定精度逼近一个或多个 曲线,并返回逼近结果。首先,轮廓的多边形逼近指的是:使用多边形来近似表示一个轮廓。其次,多边形逼近的目的是为了减少轮廓的顶点数目。但多边形逼近的结果依然是一个轮廓,只是这个轮廓相对要粗旷一些。算法原理比较简单,核心就是不断找多边形最远的点加入形成新的多边形,直到最短距离小于指定的精度。 函数原型:CvSeq* cvA
2013-06-14 15:27:34
6455
原创 OpenCV--绘图操作
一、绘图操作---画抛物线void parabola(IplImage *image, CvPoint pL, CvPoint pM, CvPoint pR, const CvScalar &color, int thickness){ double x1, y1, x2, y2, x3, y3, a, b, c; x1 = (double)pL.x; y1 =
2013-04-09 15:02:00
1603
原创 图像阈值分割---迭代算法
图像阈值分割---迭代算法1.处理流程: 1.为全局阈值选择一个初始估计值T(图像的平均灰度)。 2.用T分割图像。产生两组像素:G1有灰度值大于T的像素组成,G2有小于等于T像素组成。 3.计算G1和G2像素的平均灰度值m1和m2; 4.计算一个新的阈值:T = (m1 + m2) / 2; 5.重复步骤2和4,
2013-01-24 14:26:38
8348
原创 图像阈值分割---基本的全局阈值
由于阈值处理直观、实现简单且计算速度快,因此图像阈值处理在图像分割中处于核心地位,下面我会为大家介绍阈值处理的方法,并用OpenCV给出实现的代码。第一种:图像阈值分割---基本的全局阈值1. 处理流程: 1.为全局阈值选择一个初始估计值T(图像的平均灰度)。 2.用T分割图像。产生两组像素:G1有灰度值大于T的像素组成,G2有小于
2013-01-24 14:14:54
21590
原创 char转int
#include #include int main(void){ int n = 0; char *str = "12345.67"; n = atoi(str); printf("string = %s integer = %d\n", str, n); return 0;}简单的实现atoi函数源代码:#include int my_atoi(const
2013-01-04 15:33:30
1186
原创 OpenCV学习-常用的图像和矩阵操作函数
1.cvInRange和cvInRanges//函数原型:void cvInRange(const CvArr* src, const CvArr* lower, const CvArr* upper, CvArr* dst ); void cvInRangeS( const CvArr* src, CvScalar lower, CvScalar upper, CvArr* dst );
2012-12-10 14:16:24
806
转载 C++类的内存地址存放问题
关于结构体和C++类的内存地址问题今天终于有时间写点东西了~ 太爽了 *_* 很多人都知道C++类是由结构体发展得来的,所以他们的成员变量(C语言的结构体只有成员变量)的内存分配机制是一样的。下面我们以类来说明问题,如果类的问题通了,结构体也也就没问题啦。 类分为成员变量和成员函数,我们先来讨论成员变量。 一个类对象的地址就是类所包含的这一片内存空间的首地址,这个首地址也就对应具体某一个成
2012-12-05 23:31:51
649
转载 二十岁出头的时候上,你一无所有,你拥有一切。
(一)嘴上说说的人生那年我在离家的时候一个劲地往自己的硬盘里塞《灌篮高手》,我妈一副嗤之以鼻的表情看着我,似乎是在说:“这么大的人了居然还这么喜欢看动漫。”我不知道怎么回应她,只好耸耸肩,因为我实在无法对我亲爱的娘亲说明这部动漫对我的意义。你知道,有些歌有些东西就是有那种力量。哪怕它在你的手机里藏了好几年,哪怕它早就过了黄金期,哪怕越来越少的人会提起它。你就是知道,当你一听
2012-12-05 13:57:32
657
转载 今天小结一下卡尔曼滤波
一直在看,一直不懂。 我这人学数学的毛病,就是需要非常细致的知道每个变量的含义,谁变谁不变必须清清楚楚告诉我,否则我就没有那个直觉。 anyway,从这篇文章入手吧:http://www.cs.unc.edu/~welch/kalman/media/pdf/kalman_intro_chinese.pdf所谓滤波,实际上是要去掉自己不想要的信号,保留想要的部分。一般来说,是把过程中
2012-12-04 14:03:06
2335
4
转载 OpenCV学习--卡尔曼滤波器
1. 什么是卡尔曼滤波器(What is the Kalman Filter?)在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人!卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理工学院分别获
2012-12-04 09:43:55
1261
原创 OpenCV学习--cvAddWeighted函数
函数介绍:vAddWeighted( const CvArr* src1, double alpha, const CvArr* src2, double beta, double gamma, CvArr* dst ); src1 第一个原数组. alpha 第一个数组元素的权值 src2 第二个原数组
2012-11-30 16:35:36
2029
原创 OpenCV常用的灰度变换方法
1.图像的反色代码如下:void MakeMat() { IplImage* src = NULL; //加载图片至内存 src = cvLoadImage("E:\\图片\\测试用\\2.jpg"); if (NULL == src) { return; }
2012-11-28 23:24:58
4535
原创 OpenCV学习--cvTermCriteria介绍
CvTermCriteria迭代算法的终止准则#define CV_TERMCRIT_ITER 1#define CV_TERMCRIT_NUMBER CV_TERMCRIT_ITER#define CV_TERMCRIT_EPS 2typedef struct CvTermCriteria { int type; /* CV_TERMCRIT_ITER
2012-11-28 08:57:39
25822
1
电子书记事本
2013-11-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人