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

Posted 昊虹图像算法

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用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;


运行结果如下图所示:

以上是关于用cout输出uchar(unsigned char)变量时,没有输出结果怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

在C++中,浮点型数据(float型)向uchar(unsigned char)强制类型转换是一种什么样的结果?

#include <reg52.h> #define uchar unsigned char //宏定义 #define uint unsigned int void de

大神看看这个C语言结构体程序都是哪里不对。100分送上。uchar,uint是宏定义的unsign

打印指向 uchar 值的指针

单片机c语言程序中,数组最多能有几个元素?为啥我定定义了一个全局的数组,unsigned cha

unsigned char 和 signed char