Получив ошибку, эта строка "res = res / 255.0" TypeError: неподдерживаемые типы операндов для /: 'NoneType' и 'float' - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь изменить изображение перед отправкой модели, чтобы предсказать, какую цифру он использует Tensorflow (v-2.0), Opencv (v-'3.4.2 ') с python (v-3.6), но получаю ошибку "Ошибка типа: неподдерживаемые типы операндов для /: 'NoneType' и 'float' ".

   path=cv2.imread('/home/farhana/Desktop/image processing/code/7.jpg')
     img = cv2.imread(path,cv2.IMREAD_GRAYSCALE)
     res=img
     res = res / 255.0
     res = res.resize(28,28)
     res = res.reshape((len(img), 28, 28,1))
     res = res.reshape(28,28,1)

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

Проблема с этими тремя строками:

path=cv2.imread('/home/farhana/Desktop/image processing/code/7.jpg')
img = cv2.imread(path,cv2.IMREAD_GRAYSCALE)
res=img

В первой строке вы читаете файл изображения и сохраняете объект изображения в (плохо названной) переменной path.

Во второй строке вы передаете объект изображения от первого вызова imread как путь к другому вызову imread. Поскольку объект изображения на самом деле не является путем, то второй вызов завершится неудачно и вернет None.

Тогда последняя строка заставляет res ссылаться на объект None, возвращаемый вторым вызовом imreadи, поскольку он None, его нельзя использовать для каких-либо операций.

Похоже, что второй вызов imread не должен происходить.

0 голосов
/ 07 октября 2019

Убедитесь, что path является допустимым путем к желаемому входному файлу. Вы можете проверить это, например, с помощью

import os
path = '/home/farhana/Desktop/image processing/code/7.jpg'
os.path.isfile(path)
# --> should give you
True

Затем используйте

import cv2
import numpy as np

img = cv2.imread(path, cv2.IMREAD_GRAYSCALE).astype(np.float64)/255
resized_img = cv2.resize(img, (28, 28)).reshape(28, 28, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...