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

函数中调用如下:
在这里插入图片描述
通过返回值和参数进行传递即可。文章来源地址https://uudwc.com/A/2XZ

原文地址:https://blog.csdn.net/myf_666/article/details/127753566

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年06月12日 01:12
【电赛最全备赛资源】电赛历年赛题源码+老学长挥泪经验之谈(文章较长全网最全)+电赛论文写作模板及评分标准【19电磁炮、17板球、15风力摆、13倒立摆、94-21全国大学生电子设计竞赛历年真题】
下一篇 2023年06月12日 01:14