用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码对照表的链接:
我们把上面的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)变量时,没有输出结果怎么办?
在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码对照表的链接:
我们把上面的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;
}
运行结果如下图所示: