[PYTHON] Calendrier de l'Avent paresseux 2019

Mise en œuvre d'auto-satisfaction de l'OCR

Plans

  1. Reconnaissez d'abord les caractères individuels. (En utilisant haar ou YOLO?)

  2. Couvrez chaque caractère avec Rectangle et effectuez le traitement suivant.

  3. Dans la zone entourée de Rectangle, la valeur de luminosité est tracée en 3D, et elle est modélisée en 3D afin que chaque caractère puisse être reconnu avec précision en fonction de l'image lors de la rotation.

# Modules
from pathlib import Path
from skimage import io
import matplotlib.pyplot as plt
import cv2
import numpy as np

# Putting some image files of any documents under dataset

p = Path("../dataset")
paths = list(p.glob("**/*.jpg "))
data1 = io.imread(paths[0])

# Using tile strategy to evaluate the recognition accuracy.

mini = data1[1200:1400, 800:1000, 0]
plt.imshow(mini)
print("Showing data to be processed...")
plt.show()

Switch1

# Highlighting the target

## Lazy normalization

if mini.max() > 256:
    subject = np.true_divide(mini, 256).astype("uint8")
else:
    subject = mini.astype("uint8")

## Creating a mask to remove noise.

mask = (subject < 200)
                
masked = mask * subject

## Distance transform

distmap = cv2.distanceTransform(masked,1,3)
                
## Creating all zero matrix, which size equal to data

featuremap = distmap*0
                
## Deciding kernel size to convolve.

ksize = 20
                
## Detecting edge with convolution...

for x in range(ksize,distmap.shape[0]-ksize*2):
    for y in range(ksize,distmap.shape[1]-ksize*2):
    
    ###Les coordonnées avec la plus grande valeur dans le noyau sont affichées sous la forme 1 dans la carte des caractéristiques....
    ### max-Le traitement est proche de la mise en commun. Max-La mise en commun et la normalisation sont menées en même temps.
    
        if distmap[x,y]>0 and distmap[x,y]==np.max(distmap[x-ksize:x+ksize,y-ksize:y+ksize]):
            featuremap[x,y]=1

        ### defining feature_dilated for imshow

        feature_dilated = cv2.dilate(featuremap, (50, 50))

print("Masked image is ... : ")
plt.imshow(masked)
plt.show()

plt.imshow(feature_dilated)
print("Feature shape is ... : " + str(feature_dilated.shape))
plt.show()

Feature_mask = (feature_dilated > 0)

Cropped = masked * Feature_mask
plt.imshow(Cropped)
plt.show()

Switch2

Tâches futures

référence

Recommended Posts

Calendrier de l'Avent paresseux 2019
Utilisez tse pour exposer le calendrier de l'Avent Qiita non publié
J'ai vérifié le calendrier supprimé dans le calendrier de l'Avent Qiita 2016
Le calendrier de l'Avent a été publié! Notifier Slack