使用 python 预处理后,C++(opencv)中的 Mat 类型数据与 image_to_array 相同吗?

Posted

技术标签:

【中文标题】使用 python 预处理后,C++(opencv)中的 Mat 类型数据与 image_to_array 相同吗?【英文标题】:Mat type data in C++ (opencv) as same as the image_to_array after using python preprocessing? 【发布时间】:2019-07-25 06:51:33 【问题描述】:

我正在将 python 代码转换为 C++,我遇到了关于 OpenCV(C++ 版本)中的 Mat 和 Python 中的 image preprocessing 的数据结构问题。

Python 代码如下:

img = image.load_img(img_path)
img = img.resize((d_widght, d_height), image.NEAREST).convert('RGB')
img = image.img_to_array(img)

'image.img_to_array'之后的img结果是一个3*384的三维数组。

C++ 代码如下:

Mat img = imread('1.jpg');
Mat imgdst;
resize(img, imgdst,Size(384,384)); 
//because the image size after resize in python is (384*384), so here I just convert the image size using this line.

那么'imgdst'和python中的'img'一样,都是3*384数组?

【问题讨论】:

【参考方案1】:

是的,imgdst 与 img 相同,即使在 c++ 中也可以

Mat img = imread('1.jpg');
resize(img, img,Size(384,384));

【讨论】:

emm,我的意思是..python中img的数据结构是3*384,但是,我只是用C++打印出来的数据,它看起来像一个384*384数组.. 实际上不,至少 RGB 的所有图像都会具有形状 (384,384,3),我不确定 PIL 是如何做到的,但我认为它会以形状 (3,384,384) 加载图像,根据您的观察。即使形状不同,您也可以随时调换它们 @BomerLawrence 你混淆了维度,你写了“三维数组 3*384”,三维数组有 3 个维度,所以在 Python 和 C++ 中都是 3*384 *384. 另外,为什么不在 python 中也使用 open cv 呢?代码将是 python 中几乎完全相同的副本 @sklott,是的,对不起,它是 384*384*3

以上是关于使用 python 预处理后,C++(opencv)中的 Mat 类型数据与 image_to_array 相同吗?的主要内容,如果未能解决你的问题,请参考以下文章

[转]opencv3 图像处理 之 图像缩放( python与c++实现 )

我已经安装了 OpenCV C++。我可以在不重新安装库的情况下在 Python 中使用它的功能吗?

荐书丨OpenCV算法精解:基于Python与C++

Android中用opencv处理图片

在 Raspberry PI 上使用 Python 和 OpenCV 进行图像处理 [关闭]

python+opencv图像处理