在C++中,浮点型数据(float型)向uchar(unsigned char)强制类型转换是一种什 ...

打印 上一主题 下一主题

主题 681|帖子 681|积分 2043

C++中,浮点型数据(float型)向uchar(unsigned char)强制类型转换是一种什么样的结果?
用实际的例子测试一下就行了。
  1. #include <opencv2/opencv.hpp>
  2. #include <iostream>
  3. int main()
  4. {
  5.         uchar a1 = 255;
  6.         int level = 8;
  7.         float scale = level / 256.0;
  8.        
  9.         double b1 = a1*scale;
  10.         uchar b2 = (uchar)b1;
  11.         uchar b3 = a1*scale;
  12.         return 0;
  13. }
复制代码
运行结果如下:

从中可以看出,不管是运行自动转换出的结果b3,还是强制类型转换出的结果b2,都是对浮点数7.96875向下取整的结果。
所以结论就是:在C++中,浮点型数据(float型)向uchar(unsigned char)强制类型转换是一种向下取整的运算。相当于很多语言或库中的floor()函数的效果。
再上一个Mat类矩阵的转换例子。
代码中用到的图像下载链接:https://pan.baidu.com/s/1CUMBBuLcjWjF5icX_eXrzg?pwd=nqu2
[code]#include #include using namespace cv;int main(){        Mat gray = imread("F:/material/images/2022/2022-06/0-255_level.bmp",0);        if (gray.empty())        {                std::cout

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表