Wenden Sie verschiedene Formen von Mosaiken auf Bilder an (Python, OpenCV).

Mosaik überall im Bild (Python, OpenCV)

Einführung

Hands-on-Artikel, um zurückzublicken und das durch die Entwicklung von Serverless Web App Mosaic gewonnene Wissen zu korrigieren. / 87b57dfdbcf218de91e2) Es ist ein separater Artikel aus dem Set, aber es geht um die Implementierung von Mosaikbildern.

Zuerst konnte nur das Gesicht erkannt werden, aber wie ich in diesem Artikel schrieb, habe ich es auch möglich gemacht, den Wortlaut zu erkennen. Ist der Erkennungsbereich rechteckig, wenn nur das Gesicht durch Mosaikverarbeitung verarbeitet wird? Er war parallel zum Bild, aber im Fall der Formulierung ist der Erkennungsbereich geneigt.

Ich habe ein Mosaik auf einem schrägen Bereich implementiert, der kein Rechteck ist (ob ein Polygon auch gut ist), also werde ich einen Artikel als Memorandum schreiben, bevor ich ihn vergesse.

Was du machen willst

Dies ist das Originalbild. photo-1484608856193-968d2be4080e.jpeg Ich möchte das Gesicht und das Wort "LIFE GUARD" in diesem Bild mosaikieren. faces-photo-1484608856193-968d2be4080e.jpeg Das Erkennungsergebnis sieht folgendermaßen aus. Das Gesicht ist parallel zum Bild, aber die Buchstaben sind schräg. photo-1484608856193-968d2be4080e-200203132846-458d11b515.jpeg Ich möchte ein Mosaikbild wie dieses machen.

Wie hast du es gemacht?

  1. Erstellen Sie ein Bild mit einem Mosaik, das auf das gesamte Bild angewendet wird. fullmosaic.jpeg
  2. Erstellen Sie ein Maskenbild des Teils, in dem Sie das Mosaik platzieren möchten. mask.jpeg
  3. Ein Mosaikbild wird durch Maskenverarbeitung mit dem Originalbild kombiniert. photo-1484608856193-968d2be4080e-200203132846-458d11b515.jpeg
    Sie können ein Mosaikbild wie dieses erstellen.

Code

    try:
        height = image.shape[0]
        width = image.shape[1]

        # 1.Erstellen Sie ein Bild mit einem Mosaik, das auf das gesamte Bild angewendet wird.
        ratio=0.1
        imageSmall = cv2.resize(image, None, fx=ratio, fy=ratio, interpolation=cv2.INTER_NEAREST)
        imageMosaic = cv2.resize(imageSmall, image.shape[:2][::-1], interpolation=cv2.INTER_NEAREST)

        # 2.Erstellen Sie ein Maskenbild des Teils, in das Sie ein Mosaik einfügen möchten.
        imageMask = np.tile(np.uint8(0), (height, width, 1))
        for points in pointsList:
            pointAry = convertToArray(points)
            contours = np.array(
                [
                    [pointAry[0].x, pointAry[0].y],
                    [pointAry[1].x, pointAry[1].y],
                    [pointAry[2].x, pointAry[2].y],
                    [pointAry[3].x, pointAry[3].y],
                ]
            )
            cv2.fillConvexPoly(imageMask, contours, color=(255, 255, 255))

        # 3.Ein Mosaikbild wird durch Maskenverarbeitung mit dem Originalbild kombiniert.
        # for y in range(height) :
        #     for x in range(width) :
        #         color = imageMask[y][x]
        #         if color != 0 :
        #             image[y][x] = imageMosaic[y][x]
        #↑ 10 Sekunden Code ↓ 80 Millisekunden Code(800x600)
        image = np.where(imageMask != 0, imageMosaic, image)

    except Exception as e:
        logger.exception(e)

Lose Rekrutierung

~~ Yuru Rekrutierung 1 ~~ ~~ 3. Ein Mosaikbild wird durch Maskenverarbeitung mit dem Originalbild kombiniert. ~~ ~~ Ich verarbeite jedes Pixel in einer Schleife, aber es ist langsam. Ich frage mich, ob OpenCV schneller und effizienter implementiert werden kann. Jemand. ~~ Ich habe einige Ratschläge von @yousuke_papa bekommen und es gelöst. Die Verarbeitungszeit für 800x600 Bilder wurde von 10 Sekunden auf 80 Millisekunden reduziert! Lange Schleifen in Python, nein, absolut! !!

Lose Rekrutierung 2 "Ist es ein Rechteck? Parallel zum Bild" oder "diagonaler Bereich" Der offizielle Name hier. Jemand!

Recommended Posts

Wenden Sie verschiedene Formen von Mosaiken auf Bilder an (Python, OpenCV).
Base64-Codierung von Bildern in Python 3
Stellen Sie Opencv in Python zur Verfügung
Zahlenerkennung in Bildern mit Python
So sammeln Sie Bilder in Python
Setzen Sie Python, Numpy, OpenCV3 in Ubuntu14
Extrahieren Sie mit Python Text aus Bildern
Laden Sie das GIF-Bild mit Python + OpenCV
Verwenden Sie OpenCV mit Python 3 in Window
Arbeiten mit DICOM-Bildern in Python
Objektextraktion im Bild durch Mustervergleich mit OpenCV mit Python
Bilder mit Pupil, Python und OpenCV aufnehmen
Zusammenfassung verschiedener for-Anweisungen in Python
So überprüfen Sie die Version von opencv mit Python
[python, openCV] base64 Gesichtserkennung in Bildern
Laden Sie Bilder von der URL-Liste in Python herunter
[Python] Bilder mit OpenCV lesen (für Anfänger)
Entfernen Sie DICOM-Bilder in Python
Lesen von Zeichen in Bildern mit Python OCR
So zeichnen Sie ein OpenCV-Bild mit Pygame
Quadtree in Python --2
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Python2.7 + CentOS7 + OpenCV3
Konvertieren Sie PDFs mit Python in Massenbilder
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
# 3 [python3] Verschiedene Operatoren
Plink in Python
Konstante in Python
Verwenden Sie verschiedene Rabbimq-Funktionen mit Python Pika
DICOM-Bilder mit Python Part 2 entfernen
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
OpenCV-Beispiele (Python)
Laden Sie Bilder von der URL mit Pillow in Python 3
[Hinweis] openCV + Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
[WP REST API v2] Laden Sie Bilder mit Python hoch
Puyopuyo in Python