您的位置:首页 > 运维架构

关于OpenCV中IplImage的char类型的ImageData需要进行强制类型转换为uchar的说明

2015-11-08 14:00 501 查看
    研究生期间的方向为图像处理,才知道了Opencv,机器学习,大数据挖掘等知识。作为一个opencv+c\c++的菜鸟,刚开始用VS2010+Opencv时实在是痛苦的要命,因为本科的c早忘了,结构体更是一窍不通。刚开始学习用VS显示图片时都是复制的网上的程序,对每一句话的意思并不是很懂。前几天做adaboost积分图时又遇到了IplImage的问题——即为什么要进行char到uchar的强制类型转换。找了资料查了查算是有点感悟,就和大家分享一下。

    IplImage内定义了一个 char *imageData;而在使用时,我们经常见到类似的形式是:

    uchar *data = (uchar *)gray_plane_c->imageData;

为什么要进行强制类型转换呢?因为在灰度图像中,像素值都是0-255的,在操作图像中,如果给char类型一个255则有可能会变成-1(在用char时,c标准并没有规定默认是signed char还是unsigned char,255可能会成为有符号类型的-1),所以为避免错误,才使用强制类型转换。

附:字符型数据的存储空间和值得范围

signed char   取值范围是-128-127;

unsigned char 取值范围是0-255;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息