Как использовать cv2.resize (v4.2.0) - PullRequest
0 голосов
/ 08 апреля 2020

Я запутался, пожалуйста, помогите мне понять:

У меня есть эта ошибка:

    img_array = cv2.resize(img_array, dsize=(299, 299, 3), interpolation=cv2.INTER_CUBIC)                                                                                                              
TypeError: function takes exactly 2 arguments (3 given) 

Когда

print(img_array): <class 'numpy.ndarray'>
img_array.shape: (240, 320, 3)
print(cv2.__version__): 4.2.0 

При наведении мыши на изменение размера в VSCode показывает

def resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None)
resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst . @brief Resizes an image. .
. The function resize resizes the image src down to or up to the specified size. Note that the . initial dst type or size are not taken into account. Instead, the size and type are derived from . the src,dsize,fx, and fy. If you want to resize src so that it fits the pre-created dst, . you may call the function as follows: . @code . // explicitly specify dsize=dst.size(); fx and fy will be computed from that. . resize(src, dst, dst.size(), 0, 0, interpolation); . @endcode . If you want to decimate the image by factor of 2 in each direction, you can call the function this . way: . @code . // specify fx and fy and let the function compute the destination image size. . resize(src, dst, Size(), 0.5, 0.5, interpolation); . @endcode . To shrink an image, it will generally look best with #INTER_AREA interpolation, whereas to . enlarge an image, it will generally look best with c#INTER_CUBIC (slow) or #INTER_LINEAR . (faster but still looks OK). .
. @param src input image. . @param dst output image; it has the size dsize (when it is non-zero) or the size computed from . src.size(), fx, and fy; the type of dst is the same as of src. . @param dsize output image size; if it equals zero, it is computed as: . \f[\texttt{dsize = Size(round(fx*src.cols), round(fy*src.rows))}\f] . Either dsize or both fx and fy must be non-zero. . @param fx scale factor along the horizontal axis; when it equals 0, it is computed as . \f[\texttt{(double)dsize.width/src.cols}\f] . @param fy scale factor along the vertical axis; when it equals 0, it is computed as . \f[\texttt{(double)dsize.height/src.rows}\f] . @param interpolation interpolation method, see #InterpolationFlags .
. @sa warpAffine, warpPerspective, remap

Что несовместимо с тем, что есть в документах https://docs.opencv.org/4.2.0/da/d54/group__imgproc__transform.html#ga47a974309e9102f5f08231edc7e7529d

Кто-нибудь знает, что случилось? Как правильно использовать cv2.resize v4.2.0? (поскольку все мои поиски в Google дали код, который я пытался запустить)

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Я думаю, что ошибка исходит из измерения, которое требует только ширины и высоты.

Попробуйте это:

img_array = cv2.resize(img_array, dsize=(299, 299), interpolation=cv2.INTER_CUBIC)

Подробное объяснение можно найти здесь:

Объяснение cv2.resize

Надеюсь, это поможет!

0 голосов
/ 08 апреля 2020

Я бы go об этом сделал:

new_img_array = cv2.resize("img_array", dsize=(299,229))

Я не считаю, что интерполяция необходима для простого изменения размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...