首页 > 解决方案 > AssertionError:图像大小不同,分割图像时出错

问题描述

我正在尝试计算图像感兴趣区域的不对称性。我得到了中心,我能够根据感兴趣区域的介质划分图像。但是,当使用分割图像比较它们之间的不对称性时,我收到以下错误。

代码:

import cv2
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.offsetbox import AnchoredText
from PIL import Image
IMD = 'IMD036'
thresh = cv2.imread(IMD+'.png',0)
_, contours,hierarchy = cv2.findContours(thresh,2,1)
print (len(contours))
cnt = contours

for i in range (len(cnt)):
    (x,y),radius = cv2.minEnclosingCircle(cnt[i])
    center = (int(x),int(y))
    radius = int(radius)
    cv2.circle(thresh,center,radius,(0,255,0),2)
    print ('Circle: ' + str(i) + ' - Center: ' + str(center) + ' - Radius: ' + str(radius))

x, y = center
print(x)
img1 = thresh[:, :x]
img2 = thresh[:, x:]

cv2.imwrite('face1.png', img1
cv2.imwrite('face2.png', img2)

i1 = Image.open("face1.png")
i2 = Image.open("face2.png")
assert i1.mode == i2.mode, "Different kinds of images."
assert i1.size == i2.size, "Different sizes."

pairs = zip(i1.getdata(), i2.getdata())
if len(i1.getbands()) == 1:
    # for gray-scale jpegs
    dif = sum(abs(p1-p2) for p1,p2 in pairs)
else:
    dif = sum(abs(c1-c2) for p1,p2 in pairs for c1,c2 in zip(p1,p2))

ncomponents = i1.size[0] * i1.size[1] * 3
print ("Difference (percentage):"+ str((dif / 255.0 * 100) / ncomponents))

错误退出:

AssertionError: Different sizes.

退出图像分割: 324x575大小:68,7kb

在此处输入图像描述

439x575大小:68,9kb

在此处输入图像描述

i1.mode = L i2.mode = L

标签: pythonimageopencvimage-processing

解决方案


推荐阅读