我正在 OTB(一个 C++ 库)中实现一个图像处理过滤器。
我在进行一些非常基本的测试时出现了奇怪的行为。当我将图像读取为“char”时,以下代码始终输出像素值(在 0-200 范围内),即使它大于 150。但是,当我使用“short int”时它工作正常。 “char”是否有特殊行为(例如字母比较而不是其数值)或者是否有任何其他原因?
当然,我的图像像素是以字节存储的,所以我更喜欢处理“char”而不是“int”,因为图像非常大(> 10 Gb)。
if (pixelvalue > 150)
{
out = 255;
}
else
{
out = pixelvalue;
}
最佳答案
unsigned char
运行到(至少)255,但 char
可以签名并限制为 127。
关于c++ - 为什么 "greater than"不适用于 char 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35771004/