0

我们正在尝试使用 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.

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

如何强制读取 400x400 Mat 的图片Vec4b

4

1 回答 1

2

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

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

于 2019-04-26T16:41:47.537 回答