关于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;
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;
相关文章推荐
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- OpenCV 2.4.3 C++ 平滑处理分析
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- python结合opencv实现人脸检测与跟踪
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程
- opencv-python学习一--人脸检测
- 在Ubuntu上安装OpenCV3.0和Python-openCV的经历
- OpenCV配置,从来没有这么简单!
- ubuntu下opencv和qt的安装配置
- OpenCV学习笔记(二十五)——OpenCV图形界面设计Qt+VS2008
- 分享一些OpenCV实现立体视觉的经验
- 关于OpenCv图像变换与基本图形检测
- "应用程序正常初始化失败"-0xc0150002 解决办法
- OpenCV->HSV色彩空间
- opencv 内存泄露
- OpenCV函数cvFindContours
- OpenCV 2.3.1图像文件的读入和显示
- opencv2 矩阵方式 resize图像缩放代码