【问题标题】:OpenCV: negative BGR values despite CV_16UC3OpenCV:尽管有 CV_16UC3,但 BGR 值为负
【发布时间】:2014-08-23 01:15:29
【问题描述】:

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

CV_16UC3 是众所周知的无符号 16 位 3 通道整数。但是,当我访问每个频道时,我会得到负值。根据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

为什么尽管类型被定义为无符号的负值???

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

    尝试 imread(path, -1);

    没有标志,图像将强制进入CV_8UC3

    (您可以通过cout &lt;&lt; mat_l.type();查看结果)

    另外,使用 imread 时预分配 mat_l 完全没有效果,反正它会被覆盖,所以最好留空。


    “为什么是负值” - Vec3s 已签名。未签名的版本是 Vec3w

    【讨论】:

    猜你喜欢
    • 2012-07-11
    • 2010-12-17
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    相关资源
    最近更新 更多