OpenCV应用笔记

1、使用cvSmooth函数,src与dst的depth要一致,否则会出现RaiseException错误。src和dst的位深不能为64位浮点。简单模糊和高斯模糊支持 1- 或 3-通道, 8-比特 和 32-比特 浮点图像。这两种方法可以(in-place)方式处理图像。

 
2、关于直接读取IplImage中的imagedata
当IplImage->depth =8时,可以直接使用*(image->imagedata)的方法来直接读取IplImage中的图像数组元素;
但当IplImage->depth !=8 时(例如64位浮点数),则不可以直接用*(image->imagedata)读取,可用cvGetReal*D的方法来读取。

3、cvSetData函数必须要在Header初始化后才可使用,要不然输出的图像会发生错位。不仅如此,由于IplImage结构中的imagedata需要有对齐的字节,所以widthstep != width*sizeof(depth)。这一点一定要注意,否则图像也会发生错位

 

4、void cvAdaptiveThreshold

(

    const CvArr* src,
    CvArr* dst,
    double max_value,
    int adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C,
    int threshold_type=CV_THRESH_BINARY,
    int block_size=3,
    double param1=5
);
关键是里面的block_size参数,该参数是决定局部阈值的block的大小,当block很小时,如block_size=3 or 5 or 7时,“自适应”的程度很高,即容易出现block里面的像素值都差不多,这样便无法二值化,而只能在边缘等梯度大的地方实现二值化,结果显得它是边缘提取函数。当把block_size设为比较大的值时,如block_size=21 or 31 or 41时,cvAdaptiveThreshold便是二值化函数

你可能感兴趣的:(c,header,DST)