用cout输出uchar(unsigned char)变量时,没有输出结果怎么办?

在OpenCV中uchar实际上就是unsigned char,其定义如下:

typedef unsigned char uchar;

在图像处理中,我们经常用unsigned char代表我们的灰度值,因为灰度值的范围刚好是0~255嘛。

于是,习惯性地用久之后我们就容易真把它当成一个0~255的数值型变量了。
但实际上,它是字符型变量,所以当我们cout输出下面变量的值时,你是看不到什么结果的。

#include <opencv2/opencv.hpp>
#include <iostream>

int main()
{
    
    
	uchar a1 = 255;
	uchar b1 = 7;
	std::cout << "a1的值为:"<< a1 << std::endl;
	std::cout << "b1的值为:" << b1 << std::endl;

	return 0;
}

在这里插入图片描述
原因见下面这幅图:
在这里插入图片描述
附一个ASCII码对照表的链接:
https://zhuanlan.zhihu.com/p/408357733

我们把上面的a1和b1的值改一下,就有输出了,代码如下:

#include <opencv2/opencv.hpp>
#include <iostream>

int main()
{
    
    
	uchar a1 = 87;
	uchar b1 = 35;
	std::cout << "a1所代表的ASCII字符为:"<< a1 << std::endl;
	std::cout << "b1所代表的ASCII字符为::" << b1 << std::endl;

	return 0;
}

在这里插入图片描述
如果要强制输出其数字值,我们可以作一个强制类型转换。

#include <opencv2/opencv.hpp>
#include <iostream>

int main()
{
    
    
	uchar a1 = 255;
	uchar b1 = 7;
	std::cout << "a1的值为:" << int(a1) << std::endl;
	std::cout << "b1的值为:" << int(b1) << std::endl;

	return 0;
}

运行结果如下图所示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wenhao_ir/article/details/125326476
今日推荐