python中的图像尺寸错误

f87krz0w  于 2023-01-27  发布在  Python
关注(0)|答案(4)|浏览(338)

试图匹配两个图像找出他们之间的分数。但它显示了一些维度错误。无法修复这个问题。我的代码如下:

from skimage.measure import compare_ssim
#import argparse
#import imutils
import cv2

img1="1.png"
img2="2.png"

# load the two input images
imageA = cv2.imread(img1)
imageB = cv2.imread(img2)

# convert the images to grayscale
grayA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY)
grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)

# compute the Structural Similarity Index (SSIM) between the two
# images, ensuring that the difference image is returned
(score, diff) = compare_ssim(grayA, grayB, full=True)
diff = (diff * 255).astype("uint8")
print("SSIM: {}".format(score))

这给予n一个错误:

raise ValueError('Input images must have the same dimensions.')

ValueError: Input images must have the same dimensions.

如何解决这个问题?

rt4zxlrg

rt4zxlrg1#

修改索拉芙·Pandas的回答:
您可以将其中一个图像的形状调整为另一个图像的大小,如下所示:

imageB=cv2.resize(imageB,imageA.shape)

注意

(H, W) = imageA.shape
# to resize and set the new width and height 
imageB = cv2.resize(imageB, (W, H))

cv2.resize函数的输入需要(W,H),这与cv2.shape(H,W)的输出顺序相反,所以你需要捕捉它,否则在比较非正方形图像时,你会得到同样的错误。

cpjpxq1n

cpjpxq1n2#

您可以通过多种方式执行此操作:
像第一种方法一样,你可以指定一个小于图像实际尺寸的固定尺寸,然后将两个图像的大小调整为相同的大小。
在第二种方法中,你可以将其中一个图像重新塑造成其他图像的大小。

imageB=cv2.resize(imageB,imageA.shape)

这将为您工作,但如果两个图像的尺寸差异非常大,有时您可能会丢失一些数据。您可以比较两个x和y尺寸,并找到最小的一个。然后将两个图像的大小调整为x和y的最小尺寸。

r1wp621o

r1wp621o3#

错误
'输入图像必须具有相同的尺寸。'
告诉您所调用的函数需要相同维度的输入图像,而您没有这样做。
很明显,可以通过提供具有相同尺寸的输入图像来解决这个问题,或者如果图像具有不同的尺寸并且由于某种原因无法更改,则不调用该函数。
从文件加载图像后,比较imageA.shape和imageB.shape。
对于简单调试:

print imageA.shape
print imageB.shape
2fjabf4q

2fjabf4q4#

您可以使用tensorflow。请参阅this link,并可以相应地修改数据

相关问题