Schreiben Sie mit OpenCV-Python Zeichen in die Kartenillustration

OpenCV-Installation

sudo pip install opencv-python

Bereiten Sie ein Bild vor

(Beispiel 1. Kartenillustration blueeyes2.jpg Quelle: [[All of Blue Eyes White Dragon] Legendäre Drachenbahn mit dem stärksten Titel von Yugioh](https://yu-gi-oh.xyz/ Blue Eyes White Dragon / post- 49725 /)

blueeyes2.jpg

(Beispiel) 2. Bild einschließlich Kartenillustration blueeyes1.jpg Quelle: Adere

blueeyes1.jpg

Schreiben Sie oben links im Bild eine Zeichenfolge

Verwenden Sie OpenCV putTxt

Bei der Anzeige oben links

sample.py


import PIL
from PIL import Image
from PIL import ExifTags
import cv2 as cv
import numpy as np

def write_text(image_path ,x ,y):
    str = "ATK:3000, DEF:2500"
    str_height = 25
    str_width = 340

    img = cv.imread(image_path)

    #Fügen Sie einen schwarzen Hintergrund hinzu
    cv.rectangle(img, (x, y), (x+str_width, y-str_height), (0, 0, 0), cv.FILLED, cv.LINE_AA)

    #Fügen Sie eine Zeile hinzu
    cv.rectangle(img, (x, y), (x+str_width, y-str_height), (0, 0, 0), 2, cv.LINE_AA)

    #Buchstaben hinzufügen
    cv.putText(img, str, (x, y),
               cv.FONT_HERSHEY_PLAIN, 2.0,
               (255, 255, 255), 2, cv.LINE_AA)

    cv.imwrite(image_path + '.new.jpg', img)

if __name__ == '__main__':
    write_text('blueeyes1.jpg', 10, 30)

Lauf

python sample.py

blueeyes1.jpg.new.jpg

Beim Kombinieren von Pattern Matching

Kombinieren Sie mit dem folgenden Code

Kartenabbildungen aus Bildern mithilfe von Feature-Point-Matching suchen

sample.py


import cv2
import numpy as np

fname_img1='blueeyes1.jpg'
fname_img2='blueeyes2.jpg'

img1 = cv2.imread(fname_img1)
img2 = cv2.imread(fname_img2)

def write_text(img ,x ,y):
    str = "ATK:3000, DEF:2500"
    str_height = 25
    str_width = 340

    #Fügen Sie einen schwarzen Hintergrund hinzu
    cv2.rectangle(img, (x, y), (x+str_width, y-str_height), (0, 0, 0), cv2.FILLED, cv2.LINE_AA)

    #Fügen Sie eine Zeile hinzu
    cv2.rectangle(img, (x, y), (x+str_width, y-str_height), (0, 0, 0), 2, cv2.LINE_AA)

    #Buchstaben hinzufügen
    cv2.putText(img, str, (x, y),
               cv2.FONT_HERSHEY_PLAIN, 2.0,
               (255, 255, 255), 2, cv2.LINE_AA)
    cv2.imwrite(fname_img1 + '.new.jpg', img)

def detect(img1, img2):
    gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
    gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
    akaze = cv2.AKAZE_create()
    kp1, des1 = akaze.detectAndCompute(gray1, None)
    kp2, des2 = akaze.detectAndCompute(gray2, None)
    
    bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
    matches = bf.match(des1, des2)
    matches = sorted(matches, key = lambda x:x.distance)
    img3 = cv2.drawMatches(img1, kp1, img2, kp2, matches[:10], None, flags=2)
    cv2.imwrite('out-match.png', img3)
    
    #homography
    good_match_rate = 0.15;
    good = matches[:int(len(matches) * good_match_rate)]

    min_match=10
    if len(good) > min_match:
        src_pts = np.float32([kp1[m.queryIdx].pt for m in good]).reshape(-1, 1, 2)
        dst_pts = np.float32([kp2[m.trainIdx].pt for m in good]).reshape(-1, 1, 2)
        # Find homography
        M, mask = cv2.findHomography(dst_pts, src_pts, cv2.RANSAC)
        matchesMask = mask.ravel().tolist()

        print(M)
        print(M[0][2])
        print(M[1][2])
        
        height = img2.shape[0]
        width = img2.shape[1]
        top_left = (int(M[0][2] +0.5), int(M[1][2] +0.5)); #tx,ty
        bottom_right = (top_left[0] + width, top_left[1] + height)
        
    write_text(img1 ,top_left[0] ,top_left[1])

detect(img1, img2)

Lauf

$ $ python sample.py
[[ 6.43984577e-01 -4.58173428e-02  1.61203033e+02]
 [ 2.85230902e-02  4.12312421e-01  1.50286636e+02]
 [ 4.54533377e-04 -5.75705548e-04  1.00000000e+00]]
161.2030333928222
150.28663624674783

out-match.png

An der Position der Karte wird eine Zeichenkette ausgegeben blueeyes1.jpg.new.jpg

Für Webkamerabilder

yugio3.png

yugio3.png.new.jpg

Es ist relativ leicht zu sehen.

Aufgabe

Es kann für Yugiohs Fernduell verwendet werden.

Referenz

opencv.jp cv::putText Ich habe versucht, das Gesicht mit OpenCV zu authentifizieren (Teil 2: Authentifizierung) So schreiben Sie Text auf ein Bild Finden Sie Kartenillustrationen aus Bildern mithilfe des Feature-Point-Matchings

Recommended Posts

Schreiben Sie mit OpenCV-Python Zeichen in die Kartenillustration
Verwenden Sie OpenCV mit Python 3 in Window
Zeichnen Sie eine Illustration mit Python + OpenCV
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Zeigen Sie Python 3 im Browser mit MAMP an
Trump-Klasse in Python (mit Vergleich)
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
[Automatisierung] Extrahieren Sie die Tabelle als PDF mit Python
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"
Der einfachste Weg, OpenCV mit Python zu verwenden
Tipps zum Schreiben werden in Python kurz abgeflacht
Binarisierung mit OpenCV / Python
Schreiben Sie Python in MySQL
Grundlegende Informationen Schreiben Sie das Problem mit dem Herbst 2018-Algorithmus in Python
[Python] Holen Sie sich die Zahlen im Diagramm mit OCR
Crawlen Sie die im Twitter-Tweet enthaltene URL mit Python
Mit Python psycopg2 erhalten Sie Ergebnisse im Diktatformat
Füllen Sie den Hintergrund mit einer einzigen Farbe mit OpenCV2 + Python
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Schreiben Sie in Python ein logarithmisches Histogramm auf die x-Achse
Python Open CV hat versucht, das Bild im Text anzuzeigen.
Schreiben Sie Pandec-Filter in Python
Schaben mit Selen in Python
"Apple-Verarbeitung" mit OpenCV3 + Python3
Betreiben Sie LibreOffice mit Python
Schaben mit Chromedriver in Python
Finde Fehler in Python
Schreiben Sie die Beta-Distribution in Python
Bildbearbeitung mit Python OpenCV
Kameraerfassung mit Python + OpenCV
Debuggen mit pdb in Python
Schreiben Sie Python in Rstudio (reticulate)
[Python] Verwenden von OpenCV mit Python (Basic)
Scraping mit Selen in Python
Scraping mit Tor in Python
Tweet mit Bild in Python
Kombiniert mit Ordnungszahl in Python
Stellen Sie Opencv in Python zur Verfügung
Schreiben wir Python mitinema4d.
Gesichtserkennung mit Python + OpenCV
Schreiben Sie mit Python in csv
Rufen Sie die API mit python3 auf.
Verwenden von OpenCV mit Python @Mac
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Berechnen Sie mit Python Millionen von Stellen in der Quadratwurzel von 2
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
Schätzen Sie die Haltung des AR-Markers mit Python + OpenCV + Drohne
Rufen Sie die Excel-Liste rekursiv in einem bestimmten Ordner mit Python ab und schreiben Sie sie in Excel.
Zahlenerkennung in Bildern mit Python
Leuchtendes Leben mit Python und OpenCV
Schreiben Sie eine Dichotomie in Python
Wie ist der Fortschritt? Lassen Sie uns mit dem Boom in Python weitermachen
Extrahieren Sie die xz-Datei mit Python
Abrufen der arXiv-API in Python