Я пытаюсь загрузить свои собственные рукописные изображения и протестировать их в своей модели MNIST. Но сначала мне нужно предварительно обработать изображения. У меня есть 100 изображений, 10 из каждых 10 цифр, сохраненных в изображениях папки. Я получаю сообщение об ошибке, и я не знаю, работает ли этот код. Любая помощь?
import cv2
from os import listdir
from os.path import isfile, join
import numpy as np
from PIL import Image
from scipy import ndimage
import math
def loadImages(path):
imagesList = listdir(path)
loadedImages = []
for image in imagesList:
gray = cv2.imread("image", cv2.CV_LOAD_IMAGE_GRAYSCALE)
gray = cv2.resize(255-gray, (28, 28))
(thresh, gray) = cv2.threshold(gray, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
while np.sum(gray[0]) == 0:
gray = gray[1:]
while np.sum(gray[:,0]) == 0:
gray = np.delete(gray,0,1)
while np.sum(gray[-1]) == 0:
gray = gray[:-1]
while np.sum(gray[:,-1]) == 0:
gray = np.delete(gray,-1,1)
rows,cols = gray.shape
if rows > cols:
factor = 20.0/rows
rows = 20
cols = int(round(cols*factor))
gray = cv2.resize(gray, (cols,rows))
else:
factor = 20.0/cols
cols = 20
rows = int(round(rows*factor))
gray = cv2.resize(gray, (cols, rows))
colsPadding = (int(math.ceil((28-cols)/2.0)),int(math.floor((28-cols)/2.0)))
rowsPadding = (int(math.ceil((28-rows)/2.0)),int(math.floor((28-rows)/2.0)))
gray = np.lib.pad(gray,(rowsPadding,colsPadding),'constant')
shiftx,shifty = getBestShift(gray)
shifted = shift(gray,shiftx,shifty)
gray = shifted
loadedImages.append(gray)
return loadedImages
def getBestShift(img):
cy,cx = ndimage.measurements.center_of_mass(img)
rows,cols = img.shape
shiftx = np.round(cols/2.0-cx).astype(int)
shifty = np.round(rows/2.0-cy).astype(int)
return shiftx,shifty
path = 'images/'
def shift(img,sx,sy):
rows,cols = img.shape
M = np.float32([[1,0,sx],[0,1,sy]])
shifted = cv2.warpAffine(img,M,(cols,rows))
return shifted
imgs = loadImages(path)
rgb=np.array(imgs)
Ошибка: AttributeError: модуль «cv2.cv2» не имеет атрибута «CV_LOAD_IMAGE_GRAYSCALE»