作者:非妃是公主
专栏:《计算机视觉》
个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩
专栏系列文章
Cannot find reference ‘imread‘ in ‘init.py‘
error: (-209:Sizes of input arguments do not match) The operation is neither ‘array op array‘ (where
主要是由于需要进行运算的两个图像矩阵大小不一致造成的。
具体地说,对于图像尺寸问题,这次报错也体会到了为什么图像都要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