Ecrire des caractères dans l'illustration de la carte avec OpenCV python

Installation d'OpenCV

sudo pip install opencv-python

Préparez une image

(Exemple 1. Illustration de la carte blueeyes2.jpg Source: [[All of Blue Eyes White Dragon] Trajectoire du dragon légendaire avec le titre le plus fort de Yugioh](https://yu-gi-oh.xyz/ Blue Eyes White Dragon / post- 49725 /)

blueeyes2.jpg

(Exemple) 2. Image avec illustration de la carte blueeyes1.jpg Source: Adere

blueeyes1.jpg

Écrivez une chaîne de caractères dans le coin supérieur gauche de l'image

Utilisez OpenCV putTxt

Lors de l'affichage dans le coin supérieur gauche

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)

    #Ajouter un fond noir
    cv.rectangle(img, (x, y), (x+str_width, y-str_height), (0, 0, 0), cv.FILLED, cv.LINE_AA)

    #Ajouter une ligne
    cv.rectangle(img, (x, y), (x+str_width, y-str_height), (0, 0, 0), 2, cv.LINE_AA)

    #Ajouter des lettres
    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)

Courir

python sample.py

blueeyes1.jpg.new.jpg

Lors de la combinaison de la correspondance de motifs

Combinez avec le code ci-dessous

Rechercher des illustrations de cartes à partir d'images à l'aide de la correspondance des points caractéristiques

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

    #Ajouter un fond noir
    cv2.rectangle(img, (x, y), (x+str_width, y-str_height), (0, 0, 0), cv2.FILLED, cv2.LINE_AA)

    #Ajouter une ligne
    cv2.rectangle(img, (x, y), (x+str_width, y-str_height), (0, 0, 0), 2, cv2.LINE_AA)

    #Ajouter des lettres
    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)

Courir

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

Une chaîne de caractères est sortie à la position de la carte blueeyes1.jpg.new.jpg

Pour les images de caméras Web

yugio3.png

yugio3.png.new.jpg

C'est relativement facile à voir.

Tâche

Il peut être utilisé pour le duel à distance de Yugioh.

référence

opencv.jp cv::putText J'ai essayé l'authentification faciale avec OpenCV (Partie 2: Authentification) Comment écrire du texte sur une image Rechercher des illustrations de cartes à partir d'images à l'aide de la correspondance des points de fonction

Recommended Posts

Ecrire des caractères dans l'illustration de la carte avec OpenCV python
Utiliser OpenCV avec Python 3 dans Window
Dessinez une illustration avec Python + OpenCV
Écrire de la documentation dans Sphinx avec Python Livereload
Ecrire le test dans la docstring python
Afficher Python 3 dans le navigateur avec MAMP
Classe Trump en Python (avec comparaison)
J'ai essayé de "lisser" l'image avec Python + OpenCV
[Automation] Extraire le tableau en PDF avec Python
J'ai essayé de "binariser" l'image avec Python + OpenCV
Le moyen le plus simple d'utiliser OpenCV avec python
Conseils pour rédiger un aplatissement concis en python
Binarisation avec OpenCV / Python
Ecrire Python dans MySQL
Informations de base Écrire le problème d'algorithme de l'automne 2018 en Python
[Python] Obtenez les nombres dans l'image graphique avec OCR
Explorez l'URL contenue dans le tweet Twitter avec python
Obtenez des résultats au format dict avec Python psycopg2
Remplissez l'arrière-plan d'une seule couleur avec OpenCV2 + Python
Je veux écrire en Python! (3) Utiliser des simulacres
Ecrire un histogramme à l'échelle logarithmique sur l'axe des x en python
Python Open CV a essayé d'afficher l'image sous forme de texte.
Ecrire des filtres Pandec en Python
Grattage au sélénium en Python
"Traitement Apple" avec OpenCV3 + Python3
Exploitez LibreOffice avec Python
Grattage avec chromedriver en python
Trouver des erreurs en Python
Écrire une distribution bêta en Python
Édition d'image avec python OpenCV
Capture de caméra avec Python + OpenCV
Débogage avec pdb en Python
Ecrire python dans Rstudio (réticulé)
[Python] Utilisation d'OpenCV avec Python (basique)
Grattage avec du sélénium en Python
Grattage avec Tor en Python
Tweet avec image en Python
Combiné avec ordinal en Python
Rendre Opencv disponible en Python
Écrivons python avec cinema4d.
Détection de visage avec Python + OpenCV
Écrire en csv avec Python
Appelez l'API avec python3.
Utiliser OpenCV avec Python @Mac
Essayez de gratter les données COVID-19 Tokyo avec Python
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
Calculez des millions de chiffres dans la racine carrée de 2 avec python
[Homologie] Comptez le nombre de trous dans les données avec Python
Estimer la posture du marqueur AR avec Python + OpenCV + drone
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
Reconnaissance des nombres dans les images avec Python
Briller la vie avec Python et OpenCV
Ecrire une dichotomie en Python
Comment est le progrès? Continuons le boom ?? en Python
Extraire le fichier xz avec python
Obtenir l'API arXiv en Python