I am trying to load my own hand written images and test them in my MNIST model. But, i need to pre process the images first. I have 100 images, 10 of every 10 digits saved on the folder images. I am getting error and i don't know if this code works. Any help?
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)
Error:AttributeError: module 'cv2.cv2' has no attribute 'CV_LOAD_IMAGE_GRAYSCALE'