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

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 error: (-209:Sizes of input arguments do not match) The operation is neither ‘array op array‘ (where,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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

专栏系列文章

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

函数中调用如下:
在这里插入图片描述
通过返回值和参数进行传递即可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/130506.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!