- Import the modules:
import cv2import numpy as np
- Specify a few constants:
CELL_SIZE = 20 # Digit image size. NCLASSES = 10 # Number of digits.TRAIN_RATIO = 0.8 # Part of all samples used for training.
- Read the digits image and prepare the labels:
digits_img = cv2.imread('../data/digits.png', 0)digits = [np.hsplit(r, digits_img.shape[1] // CELL_SIZE) for r in np.vsplit(digits_img, digits_img.shape[0] // CELL_SIZE)]digits = np.array(digits).reshape(-1, CELL_SIZE, CELL_SIZE)nsamples = digits.shape[0]labels = np.repeat(np.arange(NCLASSES), nsamples // NCLASSES)
- Perform geometric normalization, compute image moments, and align each sample:
for i in range(nsamples): m = cv2.moments(digits[i]) if m['mu02'] > 1e-3: s = m['mu11'] ...