使用 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 中使用它的功能吗?