我们正在尝试使用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强制读取图片。
答案 0 :(得分:1)
imread
的第二个参数是flags
参数,它需要一些颜色加载标志,但不能提供您提供的像素类型。读取可能的flags
值及其含义here。
代替按原样加载图像,如果它不包含4个通道或者类型不是您想要的类型,请重新组合通道(使用OpenCV split()
,merge()
,mixChannels()
等。),然后使用cv::Mat::convertTo()
将其转换为所需的像素类型。或使用合法的imread
标志来满足您的需要。