gpt4 book ai didi

c++ - OpenCV:负 BGR 值尽管 CV_16UC3

转载 作者:行者123 更新时间:2023-11-28 02:42:38 27 4
gpt4 key购买 nike

我根本无法理解 opencv Mat 类型:

CV_16UC3 是众所周知的无符号 16 位 3 channel 整数。但是,当我访问每个 channel 时,我得到负值。根据How should I name my RGB channels, using cv::Mat_ Vec3s 是访问的关键字。这是我所做的:

Mat mat_l(img_height,img_width,CV_16UC3);
mat_l = imread("/home/zhao/workspace/rectified_images/l_rectified_fountain.ppm");
cout << vec_mats_l[1].at<Vec3s>(44,500)[0] << " "
<< vec_mats_l[1].at<Vec3s>(44,500)[1] << " "
<< vec_mats_l[1].at<Vec3s>(44,500)[2] << endl;

输出是:27522 -32382 -32407

尽管类型 beeing 定义为无符号,为什么负值???

最佳答案

试试 imread(path, -1);

没有标志,图像将强制到 CV_8UC3

(您可以使用 cout << mat_l.type(); 查看结果)

此外,当您使用 imread 时,预分配 mat_l 根本不起作用,它无论如何都会被覆盖,所以最好将其留空。


“为什么是负值”——Vec3s 是有符号的。未签名的版本是 Vec3w

关于c++ - OpenCV:负 BGR 值尽管 CV_16UC3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25451683/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com