uchar和char、schar的区别

一、ucahr:图像处理中常常使用的一种数据类型uchar,一般它指的就是unsigned char,是一种8-bit无符号整形数据,范围为[0, 255],可以查到它的定义为:

typedef unsigned char uchar;

二、schar:与uchar相对应的是schar,定义为

typedef signed char schar;

取值范围是[-128, 127],与8-bit图像的灰度级[0, 255]一一对应,所以图像灰度操作的时候经常使用(十六进制的0xff对应于十进制的255)。

#define CHAR_BIT      8         /* number of bits in a char */
#define SCHAR_MIN   (-128)      /* minimum signed char value */
#define SCHAR_MAX     127       /* maximum signed char value */
#define UCHAR_MAX     0xff      /* maximum unsigned char value */

三、char:char是C/C++整型数据中比较古怪的一个,是一个可容纳单个字符的数据类型,其它的如int/long/short等不指定signed/unsigned时都默认是signed,但char在标准中是unsigned,编译器可以实现为带符号的,也可以实现为不带符号的,有些编译器如pSOS的编译器,还可以通过编译开关来指定它是有符号数还是无符号数,取值范围是[-128, 127]。

你可能感兴趣的:(C/C++,opencv/图像处理)