【问题标题】:TypeError: structural_similarity() takes 2 positional arguments but 8 were givenTypeError:structure_similarity() 采用 2 个位置参数,但给出了 8 个
【发布时间】:2020-02-18 05:33:09
【问题描述】:

我在python和opencv中计算两张灰度图的相似度时,调用compare_ssim()的函数报错。

gray1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
(score, diff) = compare_ssim(gray1, gray2, full=True)

报错信息如下:

TypeError:structure_similarity() 接受 2 个位置参数,但给出了 8 个

这是来自库的函数。来自_structural_similarity.py 文件。目录为\skimage\measure\_structural_similarity.py

def compare_ssim(X, Y, win_size=None, gradient=False,
                 data_range=None, multichannel=False, gaussian_weights=False,
                 full=False, **kwargs):
    warn('DEPRECATED: skimage.measure.compare_ssim has been moved to '
         'skimage.metrics.structural_similarity. It will be removed from '
         'skimage.measure in version 0.18.', stacklevel=2)
       return structural_similarity(X, Y, win_size, gradient,
                                 data_range, multichannel, gaussian_weights, 
                                 full, **kwargs)

return 行,此行显示错误信息。

还有structural_similarity()。这个函数的目录是\skimage\metrics\_structural_similarity.py,函数如下:

def structural_similarity(im1, im2,
                          *,
                          win_size=None, gradient=False, data_range=None,
                          multichannel=False, gaussian_weights=False,
                          full=False, **kwargs):

这是什么问题,为什么会这样?

【问题讨论】:

  • 您好 Frans Fan,欢迎来到 Stack Overflow。请edit您的问题提供您收到的异常的完整追溯,而不仅仅是最终消息。它提到了一个您没有直接调用的函数,因此问题出在哪里并不明显。我还为您的问题添加了一些标签,因此在编辑时,请仔细检查它们是否正确(并添加任何适当的标签)。 compare_ssim 是你写的函数吗?如果是这样,也包括它的代码!如果它来自图书馆,请说明它来自哪里。
  • 我在 opencv 库中没有看到 structural_similarity 函数。你知道这个函数是从哪里来的吗?你提到了一个structural_similarity 文件,它是从哪里来的?此外,是否在某处定义了 structural_similarity 函数(即 def structural_similarity(....):?

标签: python python-3.x opencv


【解决方案1】:

感谢您的耐心等待。我已经解决了这个问题。 应该是函数调用错误。当我将头文件'from skimage.measures import compare_ssim'替换为from skimage.metrics import structural_similarity,将函数调用替换为(score, diff) = structural_similarity(gray1, gray2, full=True),编译成功

【讨论】:

    【解决方案2】:

    我试过用这个:

    from skimage.metrics import structural_similarity as ssim
    ...
    s = ssim(gray_image_1,gray_image_2)
    

    这里,gray_image_1.shape = gray_image_2.shape = (420,420)。 这对我有用(python 3.6.6)。

    `

    【讨论】:

      【解决方案3】:
      from skimage.metrics import structural_similarity
      

      试试吧……

      【讨论】:

      • 而不是这个“compare_ssim”
      猜你喜欢
      • 1970-01-01
      • 2023-01-11
      • 2013-10-28
      • 2018-12-06
      • 2020-05-20
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多