当前位置: 代码迷 >> python >> + =不支持的操作数类型:“ NoneType”和“ list”
  详细解决方案

+ =不支持的操作数类型:“ NoneType”和“ list”

热度:107   发布时间:2023-07-16 10:19:10.0

您好,我编写了代码以使用归一化互相关来查找图像的相似性。 我收到上述错误,但无法获取。有人可以找到我的错误是什么。 预先感谢:)

from numpy import *
from PIL import Image
from scipy import misc
import sys
import math
import numpy as np
import scipy.signal
import cv2
from cv2 import cv
path1='D:/PROJECT/database/453.png'
path2='D:/PROJECT/database/453.png'
im1=Image.open('D:/PROJECT/database/453.png')
im2=Image.open('D:/PROJECT/database/453.png')
#numpart=0
#denpart=0
numpart=[0.0,0.0,0.0,0.0]
denpart=[0.0,0.0,0.0,0.0]

pix1 = im1.load()
pix2=im2.load()
width=181
height=256
x1= misc.imread(path1)
x2= misc.imread(path2)
m1=x1.mean()
m2=x2.mean()
#print m2
for i in range(0,width):
    for j in range (0,height):
        y1=pix1[i,j]
        y2=pix2[i,j]
        nump1z1=y1-m1
        nump2z1=y2-m2
        n=nump1z1*nump2z1
        numpart+=n
        denp1z1=(y1-m1)**2
        denp2z1=(y2-m2)**2
        d=(denp1z1*denp2z1)
        e=map(math.sqrt,d)
        denpart+=e
ncc=numpart/denpart
print ncc 

很简单

numpart=[0.0,0.0,0.0,0.0]
...
numpart += n

您正在尝试将n添加到numpart列表中,而不是那样设计的,您可能需要查看.append(),其中numpart.append(n)会将n添加到列表末尾,或者

for number in range(0, numpart):
    numpart[number] += n

根据您还需要:

ncc=numpart/denpart

因为它们是列表也将不起作用

再次,使用与我刚才用于将n添加到列表中的每个条目相同的技术,即可在这里工作,只需使用ncc[number] = numpart[number]/denpart[number]

  相关解决方案