Appliquer diverses formes de mosaïques aux images (Python, OpenCV)

Mosaïque n'importe où dans l'image (Python, OpenCV)

introduction

Article pratique pour regarder en arrière et corriger les connaissances acquises en développant Serverless Web App Mosaic / 87b57dfdbcf218de91e2) C'est un article séparé de l'ensemble, mais il s'agit de l'implémentation de mosaïques d'images.

Au début, seul le visage pouvait être détecté, mais comme je l'ai écrit dans cet article, j'ai également permis de détecter le libellé. La zone de détection est-elle rectangulaire alors que seul le visage est traité par traitement mosaïque? Elle était parallèle à l'image, mais dans le cas du libellé, la zone de détection est inclinée.

J'ai implémenté une mosaïque sur une zone inclinée qui n'est pas un rectangle (si un polygone est également bon), donc j'écrirai un article comme mémorandum avant de l'oublier.

Chose que tu veux faire

Ceci est l'image originale. photo-1484608856193-968d2be4080e.jpeg Je veux mosaïquer le visage et le mot "LIFE GUARD" dans cette image. faces-photo-1484608856193-968d2be4080e.jpeg Le résultat de la détection ressemble à ceci. Le visage est parallèle à l'image, mais les lettres sont inclinées. photo-1484608856193-968d2be4080e-200203132846-458d11b515.jpeg Je veux créer une image en mosaïque comme celle-ci.

Comment as-tu fais

  1. Créez une image avec une mosaïque appliquée à l'image entière. fullmosaic.jpeg
  2. Créez une image de masque de la pièce où vous souhaitez placer la mosaïque. mask.jpeg
  3. Une image mosaïque est combinée avec l'image originale par traitement de masque. photo-1484608856193-968d2be4080e-200203132846-458d11b515.jpeg
    Vous pouvez créer une image en mosaïque comme celle-ci.

code

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

        # 1.Créez une image avec une mosaïque appliquée à l'image entière.
        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.Créez une image de masque de la pièce où vous souhaitez placer une mosaïque.
        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.Une image en mosaïque est combinée avec l'image originale par traitement de masque.
        # for y in range(height) :
        #     for x in range(width) :
        #         color = imageMask[y][x]
        #         if color != 0 :
        #             image[y][x] = imageMosaic[y][x]
        #↑ code 10 secondes ↓ code 80 millisecondes(800x600)
        image = np.where(imageMask != 0, imageMosaic, image)

    except Exception as e:
        logger.exception(e)

Recrutement lâche

~~ Recrutement Yuru 1 ~~ ~~ 3. Une image mosaïque est combinée avec l'image originale par traitement de masque. ~~ ~~ Je traite chaque pixel en boucle, mais c'est lent. Je me demande si OpenCV peut être implémenté plus rapidement et plus efficacement. Quelqu'un. ~~ J'ai reçu des conseils de @yousuke_papa et je l'ai résolu. Le temps de traitement des images 800x600 a été réduit de 10 secondes à 80 millisecondes! De longues boucles en Python, non, absolument! !!

Recrutement lâche 2 "Est-ce un rectangle? Parallèle à l'image" ou "zone diagonale" Le nom officiel ici. Quelqu'un!

Recommended Posts

Appliquer diverses formes de mosaïques aux images (Python, OpenCV)
Encodage base64 des images en Python 3
Rendre Opencv disponible en Python
Reconnaissance des nombres dans les images avec Python
Comment collecter des images en Python
Mettez python, numpy, opencv3 dans ubuntu14
Extraire du texte d'images avec Python
Charger une image gif avec Python + OpenCV
Utiliser OpenCV avec Python 3 dans Window
Travailler avec des images DICOM en Python
Extraction d'objets dans l'image par correspondance de modèles en utilisant OpenCV avec Python
Capturer des images avec Pupil, python et OpenCV
Résumé de diverses instructions for en Python
Comment vérifier la version d'opencv avec python
[python, openCV] base64 Reconnaissance faciale dans les images
Télécharger des images à partir de la liste d'URL en Python
[Python] Lire des images avec OpenCV (pour les débutants)
Débarrassez-vous des images DICOM en Python
Lire des caractères dans des images avec Python OCR
Comment dessiner une image OpenCV avec Pygame
Quadtree en Python --2
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Python2.7 + CentOS7 + OpenCV3
Convertissez des PDF en images en masse avec Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
# 3 [python3] Divers opérateurs
Plink en Python
Constante en Python
Utilisez diverses fonctionnalités de rabbimq avec python pika
Se débarrasser des images DICOM avec Python Partie 2
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
Exemples OpenCV (Python)
Charger des images à partir d'une URL à l'aide de Pillow dans Python 3
[Remarque] openCV + python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
[WP REST API v2] Télécharger des images avec Python
Puyopuyo en python