将CV_8UC4大小减半的C ++ OpenCV读入

时间:2019-04-26 16:11:03

标签: c++ opencv png imread opencv4

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

*image = imread( filepath, CV_8UC4 );

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

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强制读取图片。

1 个答案:

答案 0 :(得分:1)

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

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