Versuchen Sie, die Bildkonvertierung mit OpenCV mit Python zu projizieren

Einführung

Objektextraktion im Bild durch Mustervergleich mit OpenCV mit Python

Als ich mich beim Erstellen des obigen Artikels mit OpenCV befasst habe, scheint es, dass ich wirklich verschiedene Dinge tun kann, also habe ich beschlossen, zu versuchen, was ich mir vorerst ausgedacht habe.

Das Verfahren der "Projektionskonvertierung", bei dem das von der Kamera der Visitenkarte aufgenommene Bild so korrigiert wird, als ob es von vorne aufgenommen worden wäre, ist nachstehend zusammengefasst.

Betriebsumgebung

Artikel Inhalt
Maschine MacBook Air (13-inch, Early 2015)
Prozessor 2.2 GHz Intel Core i7
Erinnerung 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

Bauverfahren für die Umwelt

Die übliche Front-Miso finden Sie unter der folgenden URL.

Foto verwendet

Verwenden Sie die Rückseite Ihrer Visitenkarte, die mit einer iPhone-Kamera aufgenommen wurde. (IMG_4778.JPG)

IMG_4778.jpg

Bibliothek gelesen

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))

Bild lesen

python


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

Farbbinarisierung und Konturextraktion

python


#Graustufen
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

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

Das Ergebnis der Binärisierung ist wie folgt.

Unknown-1.png

python


#Konturextraktion
image, contours, hierarchy = cv2.findContours(th1, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

#Sortieren Sie nur diejenigen mit einer großen Fläche
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)

Der Umriss wurde korrekt extrahiert und ich konnte ihn in einen roten Rahmen einschließen.

Unknown-2.png

Projektionskonvertierung

Projiziert jeden Punkt des Rahmens gemäß den entsprechenden Koordinaten.

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)

Das konvertierte Ergebnis lautet wie folgt.

Unknown.png

erledigt!

Bonus

Ich habe versucht, die erkannten Visitenkartenzeichen mithilfe einer Bibliothek namens tesseract-ocr zu orcieren.

tesseract-oct

Fügen Sie nach dem obigen Quellcode den folgenden Code hinzu.

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"))

Ergebnis ist ...

[Gast halten]
ヽ/Dimension Tour Eröffnungstechnologie
Küstennachrichten ‡
Typ 3 Denki Chief Brancher
Otoshiki Sagi 4 Condyle Gefährliche Ballhandhabungskleidung
Karate erste Stufe

 

Nisuta

... es gibt Raum für Verbesserungen (Schweiß)

Recommended Posts

Versuchen Sie, die Bildkonvertierung mit OpenCV mit Python zu projizieren
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
[Python] Verwenden von OpenCV mit Python (Basic)
Verwenden von OpenCV mit Python @Mac
Ich habe versucht, das Bild mit Python + OpenCV "morphologisch zu konvertieren"
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Laden Sie das GIF-Bild mit Python + OpenCV
Grundlegendes Studium von OpenCV mit Python
Versuchen Sie eine Formel mit Σ mit Python
Bilder mit Pupil, Python und OpenCV aufnehmen
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden
[python, openCV] base64 Gesichtserkennung in Bildern
Ausrichten gescannter Bilder von animiertem Videopapier mit OpenCV und Python
[Python] Bilder mit OpenCV lesen (für Anfänger)
Objektextraktion im Bild durch Mustervergleich mit OpenCV mit Python
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
Erhalten und schätzen Sie die Form des Kopfes mit Dlib und OpenCV mit Python
Versuchen Sie es mit dem Sammlungsmodul (ChainMap) von python3
Anonymer Upload von Bildern mit der Imgur-API (mit Python)
Wavelet-Konvertierung von Bildern mit PyWavelets und OpenCV
Versuchen Sie, Fische mit Python + OpenCV2.4 (unvollendet) zu erkennen.
Versuchen Sie es mit Python.
Versuchen Sie es mit Tweepy [Python2.7]
[OpenCV / Python] Ich habe versucht, Bilder mit OpenCV zu analysieren
[Windows] [Python] Kamerakalibrierung des Fischaugenobjektivs mit OpenCV
Angrenzende Bilder mit Python Teil 1
Versuchen Sie, PythonTex mit Texpad zu verwenden.
"Apple-Verarbeitung" mit OpenCV3 + Python3
[S3] CRUD mit S3 unter Verwendung von Python [Python]
[Python] Versuchen Sie, Tkinters Leinwand zu verwenden
Versuchen Sie die Kantenerkennung mit OpenCV
Verwenden von Quaternion mit Python ~ numpy-quaternion ~
Bildbearbeitung mit Python OpenCV
Versuchen Sie es mit matplotlib mit PyCharm
Kameraerfassung mit Python + OpenCV
Probieren Sie die Python-Ausgabe mit Haxe 3.2 aus
Versuchen Sie es mit Kubernetes Client -Python-
Versuchen Sie es mit OpenCV unter Windows
Python: Grundlagen der Verwendung von Scikit-Learn ①
Gesichtserkennung mit Python + OpenCV
Versuchen Sie, Python mit Try Jupyter auszuführen
Beschleunigen Sie das Laden von Python-Bildern
Versuchen Sie die Gesichtserkennung mit Python
Probieren Sie OpenCV mit Google Colaboratory aus
Versuchen Sie es mit Folium mit Anakonda
Senden Sie mit Python mit Google Mail
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Erste Schritte mit Python3 # 3 Versuchen Sie erweiterte Berechnungen mit der import-Anweisung
Cloud-Funktionen zum Ändern der Bildgröße mithilfe von OpenCV mit Cloud Storage-Trigger
Die Geschichte der Anzeige von Bildern mit OpenCV oder PIL (nur)
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Schätzen Sie die Haltung des AR-Markers mit Python + OpenCV + Drohne
Versuchen Sie die Verschlüsselung / Entschlüsselung mit dem OpenSSL-Schlüssel mit Python3-Pow-Funktion
[Python] Mit OpenCV können Sie problemlos Bilddateien mit Seriennummern lesen
Vervollständigung von Python mit Emacs mit Company-Jedi
Zahlenerkennung in Bildern mit Python
Umgebungskonstruktion von Python und OpenCV
Harmonischer Mittelwert von Python (mit SciPy)