读代码的知识点

来源:互联网 发布:社交网络大数据分析 编辑:程序博客网 时间:2024/04/29 21:06

char后面带2个星号

char **表示指针的指针

char虽然是 unsigned,但是在定义的时候不能加 unsigned.具体要翻书<The C++ Programing Language>

cvLoadImage 第2个参数的含义

cvLoadImage( filename, -1 ); 默认读取图像的原通道数  

cvLoadImage( filename, 0 ); 强制转化读取图像为灰度图  

cvLoadImage( filename, 1 ); 读取彩色图

vector<CvPoint>和vector<double>的关系


image->nChannels 表示图像的通道

函数cvCvtColor

参数CV_BGR2GRAY 是RGB到gray, 

FastMatchTemplate_h运行在命令行上,没有可视化界面

CFSTR

CFSTR("haarcascade_frontalface_alt2") 相当于 @"haarcascade_frontalface_alt2"

更多:

CoreFoundation里面的CFStringRef和NSString*是可以直接转换的,两种也都有一个相似的用来直接赋常量的操作。例如:

CFStringRef a = CFSTR("a");
NSString *b = @"b";

CFSTR是一个宏,这个宏的定义可能是CFStringMakeConstantString,也可能是__builtin___CFStringMakeConstantString。如果是CFStringMakeConstantString,看看CFStringMakeConstantString的实现就会明白,CFSTR("a")是存放在一个全局字典里面的,下次用到CFSTR("a")的时候先查字典里面有没有,如果有就是用存在的,如果没有则分配一个,并且放到字典里面。

所以这里有两个需要注意的,一:CFSTR分配出来的字符串对象是不能自己释放的,如果你释放了下次在使用就会使用到一个野对象;二:多线程使用可能会出问题,因为全局的字典是没有锁的。

而NSString的@有些不一样,应该和__builtin___CFStringMakeConstantString有些类似,允许你多线程使用,同样也不需要你自己去release,可以理解为b是一个autorelease的对象,系统会自己自动收回b。如果想长时间持有b那就retain,但不要忘了release。


原创粉丝点击