Essayez de projeter la conversion d'image en utilisant OpenCV avec Python

introduction

Extraction d'objets dans l'image par correspondance de modèles en utilisant OpenCV avec Python

Lorsque j'ai examiné OpenCV lors de la création de l'article ci-dessus, il semble que je puisse vraiment faire diverses choses, j'ai donc décidé d'essayer ce que j'avais proposé pour le moment.

Ainsi, la procédure de «conversion par projection» qui corrige l'image d'une carte de visite prise avec un appareil photo comme si elle était prise de face est résumée ci-dessous.

Environnement d'exploitation

article Contenu
Machine MacBook Air (13-inch, Early 2015)
Processeur 2.2 GHz Intel Core i7
Mémoire 8 GB 1600 MHz DDR3
Python 3.6.0 :: Anaconda 4.3.1 (x86_64)
Jupyter Notebook 4.2.1
OpenCV 3.3.0-rc

Procédure de construction de l'environnement

Veuillez vous référer à l'URL suivante pour le miso avant habituel.

Photo utilisée

Utilisez le verso de votre carte de visite prise avec un appareil photo iPhone. (IMG_4778.JPG)

IMG_4778.jpg

Lecture de la bibliothèque

python


import cv2
import numpy as np

from IPython.display import display, Image

def display_cv_image(image, format='.png'):
    decoded_bytes = cv2.imencode(format, image)[1].tobytes()
    display(Image(data=decoded_bytes))

Lecture d'image

python


img = cv2.imread("IMG_4778.JPG")
display_cv_image(img)

Binarisation des couleurs et extraction des contours

python


#Échelle de gris
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#Binarisation
ret,th1 = cv2.threshold(gray,200,255,cv2.THRESH_BINARY)
display_cv_image(th1)

Le résultat de la binarisation est le suivant.

Unknown-1.png

python


#Extraction de contour
image, contours, hierarchy = cv2.findContours(th1, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

#Trier uniquement ceux qui ont une grande surface
areas = []
for cnt in contours:
    area = cv2.contourArea(cnt)
    if area > 10000:
        epsilon = 0.1*cv2.arcLength(cnt,True)
        approx = cv2.approxPolyDP(cnt,epsilon,True)
        areas.append(approx)

cv2.drawContours(img,areas,-1,(0,255,0),3)
display_cv_image(img)

Le contour a été extrait correctement et j'ai pu le placer dans un cadre rouge.

Unknown-2.png

Conversion de projection

Projette chaque point du cadre selon les coordonnées correspondantes.

python


img = cv2.imread("IMG_4778.JPG")

dst = []

pts1 = np.float32(areas[0])
pts2 = np.float32([[600,300],[600,0],[0,0],[0,300]])

M = cv2.getPerspectiveTransform(pts1,pts2)
dst = cv2.warpPerspective(img,M,(600,300))

display_cv_image(dst)

Le résultat converti est le suivant.

Unknown.png

l'a fait!

prime

J'ai essayé d'ORC les caractères de carte de visite reconnus en utilisant une bibliothèque appelée tesseract-ocr.

tesseract-oct

Ajoutez le code suivant après le code source ci-dessus.

python


import pyocr
from PIL import Image
tools = pyocr.get_available_tools()
tool = tools[0]
print(tool.image_to_string(Image.fromarray(dst), lang="jpn"))

Le résultat est ...

[Invité en attente]
ヽ/Technologie d'ouverture du tour de dimension
Actualités côtières ‡
Chef Brancher Type 3 Denki
Otoshiki Sagi 4 Condyle Vêtements de manipulation de balles dangereuses
Karaté première étape

 

Nisuta

... il y a place à l'amélioration (transpiration)

Recommended Posts

Essayez de projeter la conversion d'image en utilisant OpenCV avec Python
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
[Python] Utilisation d'OpenCV avec Python (basique)
Utiliser OpenCV avec Python @Mac
J'ai essayé la "conversion de morphologie" de l'image avec Python + OpenCV
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
[Python] Utilisation d'OpenCV avec Python (détection des bords)
Essayez la reconnaissance faciale avec python + OpenCV
Charger une image gif avec Python + OpenCV
Etude de base d'OpenCV avec Python
Essayez une formule utilisant Σ avec python
Capturer des images avec Pupil, python et OpenCV
Essayez d'utiliser Python avec Google Cloud Functions
[python, openCV] base64 Reconnaissance faciale dans les images
Alignement d'images numérisées de papier vidéo animé à l'aide d'OpenCV et de Python
[Python] Lire des images avec OpenCV (pour les débutants)
Extraction d'objets dans l'image par correspondance de modèles en utilisant OpenCV avec Python
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
Obtenez et estimez la forme de la tête en utilisant Dlib et OpenCV avec python
Essayez d'utiliser le module de collections (ChainMap) de python3
Téléchargement anonyme d'images à l'aide de l'API Imgur (à l'aide de Python)
Conversion en ondelettes d'images avec PyWavelets et OpenCV
Essayez de détecter les poissons avec python + OpenCV2.4 (inachevé)
Essayez de gratter avec Python.
Essayez d'utiliser Tweepy [Python2.7]
[OpenCV / Python] J'ai essayé l'analyse d'image de cellules avec OpenCV
[Windows] [Python] Calibrage de la caméra de l'objectif fisheye avec OpenCV
Images en bordure avec python Partie 1
Essayez d'utiliser PythonTex avec Texpad.
"Traitement Apple" avec OpenCV3 + Python3
[S3] CRUD avec S3 utilisant Python [Python]
[Python] Essayez d'utiliser le canevas de Tkinter
Essayez la détection des bords avec OpenCV
Utilisation de Quaternion avec Python ~ numpy-quaternion ~
Édition d'image avec python OpenCV
Essayez d'utiliser matplotlib avec PyCharm
Capture de caméra avec Python + OpenCV
Essayez la sortie Python avec Haxe 3.2
Essayez d'utiliser Kubernetes Client -Python-
Essayez d'utiliser OpenCV sur Windows
python: principes de base de l'utilisation de scikit-learn ①
Détection de visage avec Python + OpenCV
Essayez d'exécuter Python avec Try Jupyter
Accélérer le chargement des images Python
Essayez la reconnaissance faciale avec Python
Essayez OpenCV avec Google Colaboratory
Essayez d'utiliser le folium avec anaconda
Envoyer en utilisant Python avec Gmail
Essayez de gratter les données COVID-19 Tokyo avec Python
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
Premiers pas avec python3 # 3 Essayez des calculs avancés à l'aide de l'instruction d'importation
Cloud Functions pour redimensionner les images à l'aide d'OpenCV avec le déclencheur Cloud Storage
L'histoire de l'affichage d'images avec OpenCV ou PIL (uniquement)
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
Estimer la posture du marqueur AR avec Python + OpenCV + drone
Essayez le chiffrement / déchiffrement à l'aide de la clé OpenSSL avec la fonction pow de Python3
[Python] Lecture facile des fichiers image du numéro de série avec OpenCV
Compléter python avec emacs en utilisant company-jedi
Reconnaissance des nombres dans les images avec Python
Construction d'environnement de python et opencv
Moyenne harmonique par Python (en utilisant SciPy)