особое условие объекта 'numpy.float64' не вызывается - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь вычислить MSE, чтобы получить вывод PSNR

def mse(imageA, imageB):
  err = np.sum((imageA.astype("float") - imageB.astype("float")) ** 2)
  err /= float(imageA.shape[0] * imageA.shape[1])
  return err

if __name__ == '__main__':

  for i in range(1,7):
      result=cv2.imread('./ct-result/tr' + str(i) + '.bmp')
      recover = cv2.imread('./rs' + str(i) + '.bmp')
      mse=mse(result,recover)
      psnr=10*math.log10((255**2)/mse)
      print(psnr)

Я сталкиваюсь со странной ситуацией, когда использую цикл для вычисления 1 ~ 6 изображений. Похоже, объект 'numpy.float64' не вызывается на 2 ~ 6 изображениях. enter image description here

Однако, когда я меняю str (i) на число, например 2,3 ... это работает я понятия не имею, что происходит пожалуйста, помогите мне

Вы можете видеть на рисунках выше, что консоль показывает первый вывод цикла, в то время как встречаются следующие объекты: объект numpy.float64 не вызывается

Однако я просто изменяю str (i) на 2,3, и так далее работает ?? enter image description here

1 Ответ

1 голос
/ 15 марта 2019

Вы определяете функцию с именем mse(), но позже вы вызываете эту строку кода:

mse=mse(result,recover)

При этом вы переопределили mse как нечто другое, и это больше не функция.

Используйте другое имя для хранения результата вызова mse().

mse_output = mse(result,recover)
psnr=10*math.log10((255**2)/mse_output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...