【问题标题】:Python/OpenCV: Using cv2.resize() I get an errorPython/OpenCV:使用 cv2.resize() 我得到一个错误
【发布时间】:2016-09-23 10:26:48
【问题描述】:

我正在使用 python 2.7 和 opencv。

我正在尝试使用:

cv2.resize(src, dst, Size(), 0.5, 0.5, interpolation=cv2.INTER_LINEAR);

取自here。但是当我运行这段代码时,我得到NameError: global name 'Size' is not defined.

你能帮帮我吗?

【问题讨论】:

  • 您需要向Size: cv2.resize(src, dst, Size(100,100), 0.5, 0.5, interpolation=cv2.INTER_LINEAR); 提供目标大小参数
  • @EdChum 但在文档中它说// specify fx and fy and let the function compute the destination image size.
  • 是的,我刚刚意识到你应该使用 python 签名:cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst 请参阅下面 Zdar 的答案

标签: python python-2.7 opencv


【解决方案1】:

您可能正在查看resize 方法的C++ api。

python API 看起来像这样:

dst = cv2.resize(src, dsize)

在哪里

src - Original image
dsize - a tuple defining the final size of the image.

如果你想传递额外的参数,那么你可以使用 API 的命名参数:

dst = cv2.resize(src, dsize, fx = 0.5, fy=0.5, interpolation = cv2.INTER_LINEAR)

由于 dsize 是必需的参数,但如果您仍然希望 resize 方法为您计算 dsize,那么您可以将参数传递为 None

dst = cv2.resize(src, None, fx = 0.5, fy=0.5)

【讨论】:

  • 谢谢!而已!问题是因为我没有在Size() 中使用None
【解决方案2】:

前面的答案还可以,但是我想重用存储——调整image的大小以适应现有存储resized(都是3维uint8numpy数组),我需要使用

ret = cv2.resize(image, dsize=resized.shape[:2][::-1], dst=resized)

请注意,dsize 参数是向后的——它不是(行、列),而是(宽度、高度),因此是 [::-1]

我返回 ret 只是为了确认确实是 (ret == resized).all()

【讨论】:

    【解决方案3】:
    # lets doubled the size of our image/ increasing the size...
    img_double_scaled = cv2.resize(img, None, fx = 1.5, fy = 1.5, interpolation = cv2.INTER_CUBIC)
    

    【讨论】:

    • 欢迎来到 StackOverflow!虽然您的代码可能会有所帮助,但您需要清楚地解释它如何回答问题。 OP 的问题与为什么他们的代码会为 Size 产生“NameError”有关。您似乎没有在回答中解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    相关资源
    最近更新 更多