【问题标题】:unsupported operand type(s) for +=: 'NoneType' and 'list'+= 不支持的操作数类型:“NoneType”和“列表”
【发布时间】:2014-03-24 06:27:22
【问题描述】:

您好,我编写了一个代码来使用归一化互相关来查找图像的相似性。我收到上述错误但无法得到它。有人能找到我的错误吗?提前谢谢:)

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 

【问题讨论】:

  • 你能发布堆栈跟踪吗?
  • @limelights- 在 e=map(math.sqrt,d) 行
  • @Jonas 请编辑整个回溯到您的问题。
  • e=map(math.sqrt,d)// to find squareroot of e 这就是你的行吗?因为它应该给你一个SyntaxError,因为//引入评论。

标签: python python-2.7 python-3.x python-idle cross-correlation


【解决方案1】:

很简单,

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] 代替

【讨论】:

  • -感谢您的帮助,我使用下面的代码解决了我的问题并做对了。 e=map(math.sqrt,d)#求e的平方根 denpart=list(np.array(denpart) + np.array(e))
猜你喜欢
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 2018-02-21
  • 2011-11-22
相关资源
最近更新 更多