error: (-209:Sizes of input arguments do not match) The operation is neither ‘array op array‘ (where

作者:非妃是公主
专栏:《计算机视觉》
个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩
在这里插入图片描述

专栏系列文章

Cannot find reference ‘imread‘ in ‘init.py‘

error: (-209:Sizes of input arguments do not match) The operation is neither ‘array op array‘ (where

cs231n-2022-01 Assignments1-numpy的使用

ModuleNotFoundError: No module named ‘cs231n‘

主要是由于需要进行运算的两个图像矩阵大小不一致造成的。
具体地说,对于图像尺寸问题,这次报错也体会到了为什么图像都要64×64,128×128……这些2的倍数次方的数,其中一个原因就是,下采样和上采样(卷积和反卷积)是图像处理中两个很重要的运算,而这些2的次方大小尺寸的图像经过下采样和上采样后大小不会发生变化。
比如在金子塔融合过程中,计算拉普拉斯金字塔时存在着subtract操作,即两张图像做差;而图像融合时,又需要利用拉普拉斯矩阵进行add操作,即两张图像像素求和。
求差和求和就需要两张图像的尺寸相同,由于图像的尺寸的不规则(不是2的倍数),就很难保证经过多次卷积再反卷积依然可以得到相同大小的图像。具体报错如下:
在这里插入图片描述
解决方案如下,增加sameSize(imgA: numpy.ndarray, imgB: numpy.ndarray)函数,如下:

def sameSize(imgA: numpy.ndarray, imgB: numpy.ndarray):
    """
    两张尺寸不同的图片
    :param imgA: 图片 A
    :param imgB: 图片 B
    :return: 统一尺寸的两张图像: tuple
    """
    row1, col1 = imgA.shape[0:2]
    row2, col2 = imgB.shape[0:2]
    row = min(row1, row2)
    col = min(col1, col2)
    imgA = imgA[0:row, 0:col]
    imgB = imgB[0:row, 0:col]
    return imgA, imgB

函数中调用如下:
error: (-209:Sizes of input arguments do not match) The operation is neither ‘array op array‘ (where_第1张图片
通过返回值和参数进行传递即可。

你可能感兴趣的:(计算机视觉,python,计算机视觉,深度学习)