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
标志,如果它们满足您的需要的话。
我们正在尝试使用 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
标志,如果它们满足您的需要的话。