C++
淡定云天
图像处理,模式识别,深度学习,数据分析,数据挖掘
展开
-
栈、队列、vector、list的设计
现在很多时候我们喜欢用一些别人开发的开源库,比如opencv之类,我们已经把相对底层的一些东西忽略了,当需要的时候,我们发现其实自己也是可以来设计的。下面给出栈的设计实例,其他的以后再发吧。 typedef struct tagStackSeq{ int top; int* elements;//if for other use,int* can be any other data原创 2012-04-11 15:41:55 · 1654 阅读 · 0 评论 -
Lib库制作
new-》project-》general-》empty project 在project property选项卡上,选择configuration properties,general-》configuration type->选择static Library(.lib)原创 2012-04-26 09:31:33 · 918 阅读 · 0 评论 -
一个XML读写模板
现在 ,越来越多的程序使用 xml 文件作为应用程序的配置文件 , 在 windows 平台上, 一般的程序使用微软的 msxml 接口来读写 xml文件 . xml 文件原则上可以存储任意形式的数据, 比如象点坐标 , 颜色 rgb值 , 矩形坐标 , 字符串, 数值或者其他自己定义的数据结构等. 如果 xml 需要存储结构化的数据列转载 2012-05-09 20:53:22 · 880 阅读 · 0 评论 -
一个低级错误,目标跟踪,标记一下
Object myObject[100];应该是这样的:cvLine(dst,myObject[j].trajectory.at(t),myObject[j].trajectory.at(t-1),CV_RGB(0,255,0),1,CV_AA, 0 ); 不小心写成了这样cvLine(dst,myObject[j].trajectory.at(t),myObject->traject原创 2012-05-09 17:40:38 · 732 阅读 · 0 评论 -
一个读取和配置XML文件的例子
1、配置文件xml version="1.0" encoding="UTF-8"?> -configs>-HelpFile> name>hdlcnet.chmname> HelpFile>-OrderTree> state>1state> OrderTree>-转载 2012-05-09 20:49:36 · 1065 阅读 · 0 评论 -
VS 保存INI配置文件和读取配置文件
INI文件简介在我们写程序时,总有一些配置信息需要保存下来,以便在下一次启动程序完成初始化,这实际上是一种类持久化。将一些信息写入INI文件(initialization file)中,可完成简单的持久化支持。Windows提供了API接口用于操作INI文件,其支持的INI文件格式一般如下:===============================[Section1]Key转载 2012-05-09 20:50:54 · 7935 阅读 · 0 评论 -
当函数的参数中包括变量,而又想在函数执行时,改变该变量的值,使其返回,应该用指针
举个例子int detection_tracking(ImageBuffer* buffer,unsigned char* input_img,unsigned char* input_img_sampled,int *first_time);{if(*first_time){//做些什么事情*first_time=0;}else{}}使用时main原创 2012-05-10 10:14:23 · 835 阅读 · 0 评论 -
VS工程中文件释义zt
VC6以前是.dsp和.dsw。 VS.net2002以后是.vcproj和.sln .sln对应以前的.dsw .vcproj对应以前的.dspvcproj是工程文件,sln是解决方案文件。 一个解决方案里面可以包含多个工程。 你打开vcproj文件编译不了可能是因为这个工程里面用到了同一个解决方案中其它工程的东西。 Visual Studio.NET采用两种文原创 2012-06-11 08:52:12 · 686 阅读 · 0 评论 -
fopen操作视频yuv文件的一点实践经验
当我试图打开并读写数据时,我一开始用的是fopen(yuvImageName,"r+");结果发现读出来的视频yuv文件,有很厉害的抖动和颜色的偏移。后来改成如下,即fopen(yuvImageName,"rb");形式就好了,难道一定要二进制存储吗?如果不是二进制,那存储的又是什么? pSrcImgCopy = pSrcImg.GetImage(); /* ori原创 2012-10-08 15:04:24 · 3440 阅读 · 1 评论 -
在VS2008开发环境下,如何配置Lib库和dll库的名称
我的工程名字是TV;那么自动生成的话,是TV.lib。但是我希望debug版本时,在生成的文件中,加上D后为TVD.lib和TVD.dll。我找遍度娘,也没找到答案。还是谷歌厉害,一搜国外的网站,就有了答案。可见国内的学术论坛学术交流跟老外比还差得远。原创 2012-11-05 09:09:37 · 678 阅读 · 0 评论 -
初识Visual Leak Detector
初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题。内存泄漏是最常见的内存问题之一。内存泄漏如果不是很严重,在短时间内对程序不会有太大的影响,这也使得内存泄漏问题有很强的隐蔽性,不容易被发现。然而不管内存泄漏多么轻微,当程序长时间运行时,其破转载 2012-11-30 15:10:45 · 829 阅读 · 1 评论 -
malloc 和alloc及calloc的区别
C语言跟内存分配方式 (1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 (3)从堆上分配,亦称动态内存分配。程序转载 2012-12-10 20:28:50 · 15207 阅读 · 0 评论 -
内存分配秘籍:new,malloc,globalAlloc的区别与详解
C++内存分配秘籍—new,malloc,GlobalAlloc的区别与详解 [转贴 2010-05-22 15:03:13] 由于同学让我帮他将其现在的一个C++程序转换成纯C程序,原来以为应该没那么难,但是当改得编译没有错误时,然一运行就会出现错误,经过一番搜寻,才知道出现在内存分配的问题上,也就是说主要出现在动态内存上,从这让自己更加深刻地体会动态内存的意义和转载 2012-12-10 20:16:14 · 2238 阅读 · 0 评论 -
dll调用失败的原因分析
使用VS2008编译了一个程序,使用到自己编译的DLL,丢到某些机子上无法运行,提示“由于应用程序配置不正确,应用程序未能启动”的错误,装了vcredist_x86也没有用,开始以为是DLL的问题,后来换个简单的程序,仍然不行,百撕不得其解,后来上网找,下面有说了很多解决办法。 我最终的解决办法是复制本机中的.manifest文件,修改里面的版本号,复制到提示错误的机子上,与转载 2012-12-13 09:16:30 · 14510 阅读 · 0 评论 -
Sobel算法实现(C语言)
Sobel算法实现(C语言) 1 void MySobel(IplImage* gray, IplImage* gradient) 2 { 3 /* Sobel template 4 a00 a01 a02 5 a10 a11 a12 6 a20 a21 a22 7 */ 8 9 unsigned char a00,转载 2012-12-13 10:56:40 · 6299 阅读 · 0 评论 -
C语言--结构体中的指针
今天来讨论一下C中的内存管理。 记得上周在饭桌上和同事讨论C语言的崛起时,讲到了内存管理方面 我说所有指针使用前都必须初始化,结构体中的成员指针也是一样 有人反驳说,不是吧,以前做二叉树算法时,他的左右孩子指针使用时难道有初始化吗 那时我不知怎么的想不出理由,虽然我还是坚信要初始化的 过了几天这位同事说他试了一下,结构体中的成员指针不经过初始化是可以用(左子树和右子树指转载 2011-02-28 22:20:00 · 7746 阅读 · 1 评论 -
关于typedef的用法(转贴自zkheartboy的blog)
关于typedef的用法一.基本概念剖析 int* (*a[5])(int, char*); //#1void (*b[10]) (void (*)()); //#2 double(*)() (*pa)[9]; //#3 1.C语言中函数声明和数组声明。函数声明一般是这样:int fun(int, double);对应函数指针(转载 2007-04-25 14:10:00 · 1128 阅读 · 0 评论 -
C语言的时间函数
C语言的时间函数 2007-05-01 09:57http://blog.fjut.com.cn/user1/wang/archives/2006/2.htmlwindows和linux下的时间函数是有点差别的,在这些资料中都没有区别开,这里分开讨论。通用的:clock_t和clock()clock_t和clock()在两个平台下都能用,使用它们可以计算程序转载 2011-10-31 08:23:57 · 1429 阅读 · 0 评论 -
32位,64位整数及其print输出
32位机,和64位机,情况是不同的。以下仅讨论32位机。int ,unsigned int 是32位的,sizeof(int)返回4。说明是4字节(即32位)。long int , long unsigned int 情况是一样的,就是说32位机器上,long加不加没什么区别。如果想设置64位整数,可以用long long int, unsigned long long int原创 2012-04-11 15:36:25 · 8523 阅读 · 2 评论 -
二维数组的初始化(二维数组的赋值)
二维数组的初始化必须在声明的时候进行。否则会报错。比如,你应该在声明它的时候就立即赋值:unsigned char bitmap[16][17]={{0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0}, {255,255,255,0,0,0,0,0,0,0原创 2012-03-26 09:55:31 · 29095 阅读 · 2 评论 -
应用程序发布:VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序。。”
VC9编译的程序在没有装过VC9(确切的说是.Net Framework3.5)的机器上运行时,如果提示“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。”这个错误,那 么就说明该程序动态链接了VC9的运行时库,(如果还用到了MFC,那么可能动态链接了VC9的MFC库,同理还有ATL库),以及缺少对应的 manifest文件,程序在目标机器上没有找到这些库和配置文件,转载 2012-04-15 12:44:56 · 2656 阅读 · 0 评论 -
二级指针使用注意点
设:unsigned char* buffer->bitmap = NULL; //初始化:buffer->bitmap = (unsigned char**)malloc(HIGHT * sizeof(unsigned char*)); //注意点:务必是unsigned char*,不能是unsigned char for (int y = 0; y { buff原创 2012-03-29 14:53:26 · 1286 阅读 · 1 评论 -
加减乘除、开根号、log等C代码实现需要多少个时钟周期
加减法需要几个时钟周期,乘法需要10几个时钟周期,除法需要2、3十个时钟周期,开根号需要8000个时钟周期,log应该比开根号快点,毛估估1000个时钟周期,当然开根号和log都有快速算法。但是几百到上千个周期还是要的。 不对之处各位看官斧正。原创 2012-03-23 10:36:50 · 7607 阅读 · 3 评论 -
如何打开并读取图片序列
当我们验证算法的时候,往往要处理一个文件夹下大量的图片,名字是变化的,所以如何读取它们是一件很重要的事情。下面给出我在实际工作中的方法(图片命名为frame_xxxxxx): //read image from YUV file int i; char *addChar; char yuvImageName[255]; unsigned char input_img[原创 2012-03-20 09:22:28 · 1439 阅读 · 0 评论 -
VS调试中Memory窗口
vs调试中,memory是一个很重要的信息窗口。有时候不知怎么的,memory窗口就不见了。打开memory窗口的方法是Debug-》windows-》Memory-》memory1 调试技巧,点address区域,右键,可以看到数据格式选择。 更要紧的一点columns可以选择行列大小。这个在查看图像处理中某些点数据时,非常重要。特别是matlab转c代码时,这是绝技之一。原创 2012-03-19 10:01:04 · 6539 阅读 · 0 评论 -
函数指针
函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是一致的。函数指针有两个用途:调用函数和做函数的参转载 2011-10-13 16:32:41 · 680 阅读 · 0 评论 -
存储类型、作用域、可见性和生存期C++
第十五章 存储类型、作用域、可见性和生存期15.1 存储类型 15.1.1 外部存储 15.1.2 静态存储类型15.2 作用域和可见性 15.2.1 局部作用域 15.2.2 全局作用域 和 域操作符 15.2.3 作用域嵌套及可见性15.3 生存期 15.3.1 程序的内存分区 15.3.2 动态生存期 15.3.3 局部转载 2007-04-27 10:04:00 · 2223 阅读 · 0 评论 -
软件保存复杂参数到文件的一个实例,容器相关
本人某个项目中的一部分代码,与大家分享。Region是自己定义的一个类。程序中定义了四个region容器对象:vector Reg[4];在视频窗口画图的参数保存到上述容器中,下面程序实现参数保存到region.ini文件并可以程序启动时读入这些参数。class Region {public: int channel; int function; CPoin原创 2007-04-25 14:05:00 · 1129 阅读 · 0 评论 -
结构体指针问题
http://topic.csdn.net/u/20071122/15/f0b67574-eea8-470b-9ba3-131e98e2474e.html转载 2011-02-28 22:28:00 · 631 阅读 · 0 评论 -
c语言结构体指针初始化
这bug困扰我两天了!非常诡异的bug,症状是传参的时候如果传递的是结构体指针,第一次读取结构体会出来正确的值,第二次就是垃圾数据了。bug的根源在于,应该一开始就用malloc初始化结构体指针作为返回值,而不是初始化一个结构体然后取地址。这么取出来的地址类型不对,会造成诡异的bug,比方说我遇上的这个,从这个症状咱能想到什么? 看代码!以后这错误不能犯了。结构体数组一生下来就必须mal转载 2011-02-28 22:04:00 · 5150 阅读 · 0 评论 -
MFC SS_Sunken 下凹 代码发布
void CplayerTestDlg::OnStnClickedIcon1(){ // TODO: Add your control notification handler code here bCanDrawRegion = true; drawType = LINE; CStatic* h_sta1 =(CStatic*) GetDlgItem(IDI_ICON1);原创 2012-04-23 20:05:42 · 1445 阅读 · 0 评论 -
VS 转到定义,提示符号未定义。go to definition. The symbol 'xxx' is not defined
解决方法:删除项目对应的NCB文件,NCB与SLN对应,一个项目又叫解决方案(而不是工程)只有一个。删除后重新打开等绿条读完。 (删除NCB文件和SLN文件,重新编译,解决,但原因不明)原创 2012-03-19 15:01:46 · 4935 阅读 · 0 评论 -
c++ operator 重载
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只能通过函数的方式(c++中,“功能”都是由函数实现的)。一、为什么使用操作符重载?对于系统的所有操作符,一般情况下,只支持基本数据类转载 2013-01-29 09:50:58 · 973 阅读 · 0 评论