ZBLOG

int raw_rows = 683;//软件输入 int raw_cols = 1024;//软件输入 const std::string filename1 = "3.raw"; cv::Mat srcimage(raw_rows, raw_cols, CV_16UC3); FILE* f2 = fopen(filename1.c_str(), "rb"); if (f2 != nullptr){ fread(srcimage.da...

在这段代码中,首先从文件 “3.raw” 中读取数据到 cv::Mat 类型的 srcimage 中,假设数据是 CV_16UC3 格式(每个像素值有三个16位无符号整数通道)。然后通过 cv::cvtColor 函数将图像转换为灰度图像,再使用 cv::Mat.convertTo 函数将图像归一化为 8 位灰度图像(CV_8UC1 类型),缩放系数为 1.0 / 256。

如果在输出语句 std::cout << srcimage << std::endl; 中仍然有超过256的值,则说明在转换过程中可能存在问题。请检查以下几点:

  1. 检查原始数据文件 “3.raw” 是否正确,确保其中的像素值不会超过 CV_16UC3 数据类型所能表示的范围。
  2. 检查 cv::cvtColor 和 cv::Mat.convertTo 的使用是否正确。确保转换操作没有改变图像数据的范围。
  3. 可以使用其他方式打印图像数据,如遍历每个像素并输出其值,以确定具体哪些像素值超过了256。

请注意,在输出时,默认情况下 OpenCV 会自动截断超出范围的值,并用255代替。因此,在某些情况下,即使有超过256的值也不会显示出来。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=13469

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?