【发布时间】:2021-10-01 14:36:36
【问题描述】:
我下载了一个程序并尝试运行它。由于 Scipy Essentials 被弃用,我面临一些问题。
以前的程序包含与 scipy 相关的代码。简单的操作如下:
import scipy
scipy.misc.imread(filename)
scipy.misc.imresize(img, (299, 299, 3), interp='bilinear')
(请注意,这些行与程序中的顺序不同,我只是编写了遇到问题的步骤。上面给出的行完全被下面代码示例中给出的行替换。)
import matplotlib
from matplotlib import pyplot
import cv2
img = matplotlib.pyplot.imread(filename)
img = cv2.resize(img, dsize=(299, 299, 3), interpolation=cv2.INTER_LINEAR)
但是,我仍然收到以下错误
cv2.error: OpenCV(4.5.3) :-1: error: (-5:Bad argument) in function 'resize'
> Overload resolution failed:
> - Can't parse 'dsize'. Expected sequence length 2, got 3
> - Can't parse 'dsize'. Expected sequence length 2, got 3
似乎opencv只是调整二维图像的大小。
是否有任何简单的选项,即使用单个库来执行所需的操作而不会产生任何错误?如果没有,如何使用双线性插值调整该图像 numpy 数组的大小?
【问题讨论】:
-
cv2.resize说:默认情况下,调整大小只会改变图像的宽度和高度。这就是为什么当你给出一个 3 元素形状时它会抱怨,而期望只有 2。imresize的旧文档似乎也期望有 2 个值,但它可能忽略了第 3 个。 3 是channel/color数字,不应与resize更改。