摘要:
一种效果很好的自动白平衡技术(WhiteBalance)白平衡是图像处理的一个极重要概念。所谓白平衡(英文名称为White Balance),就是对白色物体的还原。当我们用肉眼观看这大千世界时,在不同的光线下,对相同的颜色的感觉基本是相同的,比如在早晨旭日初升时,我们看一个白色的物体,感到它是白的;而我们在夜晚昏暗的灯光下,看到的白色物体,感到它仍然是白的。这是由于人类从出生以后的成长过程中,人的大脑已经对不同光线下的物体的彩色还原有了适应性。但是,作为拍摄设备,如数码相机,可没有人眼的适应性,在不同的光线下,由于CCD输出的不平衡性,造成数码相机彩色还原失真。一般情况下,我们习惯性地认为太阳 阅读全文
摘要:
我从学校的生活中,探出头来,于是进入了一家美国数据分析和制图的软件公司做R&D,其实主要是code的东西。我总在反思自己的得与失,或是喜悦或是悲伤,或是淡然,总之,这就是生活。不管你喜欢与否,都要继续。有些事也学会思考,有些道理要去提炼。即使别人谓之无味,自己也可做一种修为,养一种良性。下面就是这些体会:1.永远不要先入为主,一眼定物! 其一,对事要耐心一点,在时间允许的情况下多去想想前因后果,多去思考为什么这样(阅读前人的工作,要怀有感恩和欣赏的态度去吸收精华,codes 就是宝藏!)。其二,对人要抛弃自己唯我独尊的傲慢,特别是要包容他人的缺点(这或许过于武断,所谓的缺点,正与安培定 阅读全文
摘要:
位图是计算机意义上的标图,当然了你也可以说声tif,等等,这里只是整理了一些网络的bmp图像格式和使用介绍。权当是一份笔记,如果有疑问的朋友,欢迎讨论。1.首先是BMP这种图像文件的结构要了解清楚,具体的定义,你可以到winGDI.h文件中查看,它总体上有4部分顺序组成,如下:1)BMP文件的组成结构位图文件头(bitmap-file header)位图信息头(bitmap-information header)彩色表/调色板(color table)位图数据(bitmap-data)文件头,字面意思就是:图像是一个文件,文件头的功能就是对这个图像文件的描述,包含图像类型,图像文件的大小,图像 阅读全文
摘要:
C++提供了四个显式的数据类型转换函数http://www.21tx.com 2008年12月30日 1 reintERPret_cast(在编译期间实现转换) reinterpret_cast类型转换函数将一个类型的指针转换成另一个类型的指针。这种转换不用于修改指针变量值数据存放的格式(不改变指针变量值),只需在编译期间重新解释指针的类型就可以做到。 reinterpret_cast可以将指针值转换为一个整型数。但是不能用于非指针类型的转换,否则将不会通过编译。 什么时候使用reinterpret_cast进行数据类型的转换: (1)将基本类型指针转换成另一个类型的指针。 例如:... 阅读全文
摘要:
typedef函数指针的用法: 代码简化, 促进跨平台开发的目的. typedef 行为有点像 #define 宏,用其实际类型替代同义字。 不同点:typedef 在编译时被解释,因此让编译器来应付超越预处理器能力的文本替换。用法一:typedef int (*MYFUN)(int, int);这种用法一般用在给函数定义别名的时候上面的例子定义MYFUN 是一个函数指针, 函数类型是带两个int 参数, 返回一个int在分析这种形式的定义的时候可以用下面的方法:先去掉typedef 和别名,剩下的就是原变量的类型.去掉typedef和MYFUN以后就剩:int (*)(int, int)用法 阅读全文
摘要:
前不久,看到这么一个代码段,让找出错误:class Base{ private:int i; public: Base(int x){ i=x; }};class Devd:public Base{ private: int i; public: Devd(int x,int y){ i=x; } void getval(){ i=Base::i+i; }};分析:很多人可能直接说子类构造函数没有初始化父类变量,但是我要问,你是如何看出来的?这个问题问得其实很简单,但却涉及到子类访问父类权限的问题。因为子类的构造函数和父类的构造函数都不是默认的无参函数,这就要求我们在子类中使用父类参数的时候, 阅读全文
摘要:
前不久,面试被问到关于迷途指针和空指针的关系;见下:int main(){char *p="abcde";std::cout<<*p<<std::endl;delete p;//在这个时候,系统会释放掉p指向的内存,但是p指向的这块地址还存在,当他被其他程序段使用后,我们再次不小心的使用p后,这块地址的数据就有可能被覆盖改变,发生意想不到的后果。char *q="xxxxxx";std::cout<<*q<<std::endl;*p="aaa";std::cout<<*q&l 阅读全文
摘要:
前不久被虐,深感水平之差,痛定思痛后决定静心修炼一下基本功,并做个简单回忆和整理:1.C++中class 的多重继承后sizeof2.C++中多重继承后函数的调用过程,包括顺序和系统动作。3.C++中虚函数和纯虚函数的调用过程,以及虚函数表的原理和多重继承中的关系。4.操作系统中Thred和Process对内存的使用以及资源有无共享。5.C++中重写和重载的编译过程。6.C++中child class实例化的过程,特别是构造函数的调用顺序和析构函数的释放机制。7.new,malloc的工作机制。8.类和类中函数调用时的编译和链接过程,即生成obj和link过程。。。以上的问题,很多大家都见过, 阅读全文
摘要:
关于hash算法的应用是十分广泛的,其中的最简单的原因就是我们生活的这个时代每天都在产生着巨大复杂数据,但是对于我们有价值的数据的挖掘和存储一直是一个难点。如何把我们找到和我们密切相关的且有价值的数据一直是计算机科学面临的关键问题。hash算法从某种角度讲,其实就是为了解决这一问题,尽管效果会因具体的问题和数据体积而参差不齐。所以有必要对hash算法做一个学习,这里是自己的一点小纪录。先从数据结构的散列开始,Hash Table由散列实现,散列是一种用于“以常数平均时间来执行插入,删除和查找”的技术。散列(hasing)的核心其实就是把我们的信息项,又叫key映射到hashtable中的不同位 阅读全文
摘要:
最近大大小小的c++面试面试参加了一大堆,大多顺利通过,但有些还是被鄙视的很惨,这其中就要关于函数的技术常识,平时只是稀里糊涂的写,没做过啥总结,现在就算是还账了吧。切入正题:1.函数:其实简单讲就是一个处理数据的相应功能体,但是它的实现过程很多人并不清楚,函数的存储与执行大多是在栈上完成的,具体的我不细说可以在网上找到。先举个例子:void setval(int a,int b){ a=b; }void main(){ int a=0; a=10;//---------------------1 setval(a,22);//--------------2}1,2是相同的过程吗?显然不是,c 阅读全文