Python - 用opencv编写自己的函数给出错误

时间:2015-06-07 00:59:27

标签: python opencv

import numpy as np
import cv2


def resize(image, percentage):
    img = image
    fy=percentage
    fx=percentage
    img2 = cv2.resize(img, (0,0), fx, fy)
    return cv2.img2

img = cv2.imread('test.png')
img2 = resize(img, 0.45)


cv2.imshow('image',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()

Traceback (most recent call last):
  File "C:\Users\Jay\Desktop\Portable Python\opencvprogram_ver1.py", line 14, in <module>
    img2 = resize(img, 0.45)
  File "C:\Users\Jay\Desktop\Portable Python\opencvprogram_ver1.py", line 10, in resize
    img2 = cv2.resize(img, (0,0), fx, fy)
error: C:\builds\master_PackSlaveAddon-win32-vc12-static\opencv\modules\imgproc\src\imgwarp.cpp:3209: error: (-215) dsize.area() > 0 || (inv_scale_x > 0 && inv_scale_y > 0) in function cv::resize

亲爱的Python委员会成员,

我一直在学习Python和OpenCV,我遇到了一个问题。

我试图看看是否可以在我自己的函数中包含OpenCV函数,但似乎我做错了。回溯在cv :: resize中说了一些关于dsize.area的内容,但是这个错误信息对我来说意义不大,因为我不知道它在小图片中是如何工作的。

有人可以引导我朝着正确的方向前进,这样程序就像我期望的那样工作吗?

非常感谢。

1 个答案:

答案 0 :(得分:2)

你看起来几乎是正确的。只需将函数的最后两行更改为:

    img2 = cv2.resize(img, (0,0), fx=fx, fy=fy) # enter fx and fy as keyword arguments
    return img2   # cv2.img2 was just a typo

由于fxfy不是函数的第3和第4个参数,因此必须将它们指定为关键字参数。