python - 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
解决方案
推荐阅读
- batch-file - 为什么这个 Windows 终端批处理文件会打开一个额外的选项卡?
- javascript - Firestore onSnapshot "IN" 批量条件(有条件的实时更新)
- google-apps-script - 如何解决 Oauth2 回调错误:无法读取未定义 Service_.handleCallback 的属性“参数”
- nginx - nginx 代理管理器 502 登录时网关错误
- python - 如何设置一个while循环,直到列表在Python中停止变化?
- flutter - 为什么“StateNotifierProvider + Consumer”不重建小部件?
- node.js - 自动调整 xlsx 中的行高填充
- vba - 如何避免在保存到 SharePoint 时检出 Outlook 附件?
- google-analytics - 无法捕获 Google Analytics(分析)目标
- javascript - 在完整日历中创建包含间隔的多日事件