【问题标题】:C++ OpenCV imread with CV_8UC4 halved sizeCV_8UC4 大小减半的 C++ OpenCV imread
【发布时间】:2019-04-26 16:11:03
【问题描述】:

我们正在尝试使用 OpenCV 4.1.0 调用读取大小为 400x400 的 PNG 图像:

*image = imread( filepath, CV_8UC4 );

当我打印 mat 调用的 cols 和 rows 时:

printf("col: %d , rows: %d \n", image->cols, image->rows);

它显示

col: 200, rows: 200

但是在它显示的图片上调用file

PNG image data, 400 x 400, 8-bit/color RGBA, non-interlaced.

当我尝试将图片放在第二张上时,它表明图片的尺寸确实不对。

如何强制阅读图片,给出Vec4b 的 400x400 Mat。

【问题讨论】:

  • CV_8UC4 在那里没有意义。请改用IMREAD_UNCHANGED

标签: c++ opencv png imread opencv4


【解决方案1】:

imread 的第二个参数是 flags 参数,它需要一些颜色加载标志,而不是您提供的像素类型。阅读可能的 flags 值及其含义 here

而是按原样加载图像,如果它不包含 4 个通道或类型不是您想要的,请重新组合通道(使用 OpenCV split()merge()mixChannels() 等)并将其转换为需要cv::Mat::convertTo() 的像素类型。或者使用合法的imread 标志,如果它们中的任何一个符合您的需要。

【讨论】:

    猜你喜欢
    • 2014-01-07
    • 2012-08-26
    • 2012-07-03
    • 2018-04-21
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 2014-11-20
    • 2016-02-20
    相关资源
    最近更新 更多