CV_8UC4 大小减半的 C++ OpenCV imread

C++ OpenCV imread with CV_8UC4 halved size

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

*image = imread( filepath, CV_8UC4 );

当我打印垫子的列和行调用时:

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 垫子的图片。

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

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