Créez une illusion rayée avec correction gamma pour Python3 et openCV3

environnement

windows8.1 python3.4.4 opencv3.1.0

Aperçu

Tout d'abord, veuillez voir l'illusion rayée réelle.

out03.jpg

Tu ne vois pas ce genre d'écureuil? (L'image est tirée de "Free Stock Photo Material Pakutaso") out1.jpg

Je vais l'essayer avec une illustration. Comme d'habitude, il s'agit d'une illustration d'un mexicain emprunté à "Irasutoya". mexico.jpg

Faisons une illusion rayée.

procédure

Il est grossièrement divisé en trois étapes.

  1. Convertissez l'image en monochrome
  2. Éclaircissez avec la correction gamma
  3. Combinez avec des rayures

Corps

stripe.py


import numpy as np
import cv2

"""
Environnement: python3.4.4 openCV
Image originale: image_name
Image à sauvegarder: out_name
Sortie de l'image sous forme d'illusion de bande
(À première vue, ce n'est qu'une bande, mais l'illusion qui se dégage lorsque vous la regardez en secouant la tête)
"""

image_name = 'mexico.jpg'
out_name1 = 'out01.jpg'
out_name2 = 'out02.jpg'
out_name3 = 'out03.jpg'

#Chargement des images
Img0 = cv2.imread(image_name,-1)

#Convertir en monochrome
Img0 = cv2.cvtColor(Img0, cv2.COLOR_RGB2GRAY)

#Obtenir la taille de l'image
Height, Width = Img0.shape[:2]

#Taille de la matrice
rows = Height
cols = Width

#Créez un fond blanc pur
whiteImg = np.zeros((rows, cols), np.uint8)
whiteImg.fill(255)
#Synthétisé avec l'original Img0
whiteImg += Img0
#Affichage sur le chemin
cv2.imshow("white back image", whiteImg)
k = cv2.waitKey(0)
if k == 27:
    cv2.destroyAllWindows()
elif k == ord('s'):
    cv2.imwrite(out_name1,whiteImg)


#Réglage de la luminosité(Correction gamma)
#Valeur gamma(Beaucoup plus grand que d'habitude)
gamma = 19.0

#Tableau pour le look de conversion_up_Faire une table
look_up_table = np.zeros((256, 1), np.uint8)

for i in range(256):
	look_up_table[i][0] = 255 * pow(float(i) / 255, 1.0 / gamma)

#Convertir l'image précédente avec LookUpTable
newImg = cv2.LUT(whiteImg, look_up_table)

#Affichage sur le chemin
cv2.imshow("higher brightness image", newImg)
k = cv2.waitKey(0)
if k == 27:
    cv2.destroyAllWindows()
elif k == ord('s'):
    cv2.imwrite(out_name2,newImg)


#Créez un tableau pour les rayures.
stripe = np.zeros((rows, cols), np.uint8)

#La largeur de la bande est la largeur/160(Règle empirique)
if Width >= 640:
	w = Width/160
else:
	w = 4

w = int(w)

#0~640 en blanc, 4 chacun
for i in range(0, w):
	stripe[0:rows, i:cols:w*2] = 0

#0~64 en noir par 4
for i in range(0, w):
	stripe[0:rows, i:cols:w*2] = 1
#Lorsqu'on traite une image comme une matrice, pas comme un produit logique
#Puisqu'il est traité comme une multiplication de nombres, changez-le de 0 à 1.

#Superposition de rayures
newImg *= stripe

#Image à sortir
cv2.imshow('final stripe image', newImg)

#Appuyez sur n'importe quelle touche pour terminer
#Appuyez sur s pour enregistrer
k = cv2.waitKey(0) & 0xFF
if k == 27:
    cv2.destroyAllWindows()
elif k == ord('s'):
    cv2.imwrite(out_name3,newImg)

#python stripe.Courir avec py

production

out01.jpg

Peux-tu le voir? Je suis mexicain en bonne santé.

Détails

S'il y a une partie transparente telle que png, la partie transparente sera noire, il est donc nécessaire de rendre l'arrière-plan blanc. Cette fois, en ajoutant 255 à toutes les valeurs de pixel, la partie avec la luminosité 0 est définie sur 255 (blanc), et les autres parties sont des valeurs obtenues en soustrayant 1 de la valeur de pixel d'origine (par exemple, 1 si la valeur de pixel est 1). J'ai pris la méthode de réglage +255 = 256, c'est-à-dire 0).

La formule de correction gamma est [ici](https://www.blog.umentu.work/python-opencv3%E3%81%A7%E3%82%AC%E3%83%B3%E3%83%9E%E5 Veuillez vérifier avec% A4% 89% E6% 8F% 9Bgamma-conversion-2 /). Puisque la force du signal optique et du signal électrique ne sont pas proportionnels l'un à l'autre, la valeur n'est pas augmentée uniformément, mais une telle correction est effectuée.

De plus, nous présenterons les trois calculs matriciels suivants qui sont pratiques pour le traitement d'image. -Générer une matrice avec tous les éléments 0    Img = np.zeros((rows, cols), np.uint8) -Remplir la matrice avec une certaine valeur    Img.fill(255) -Substituer les valeurs de (row1, col1) à (row2, col2) dans la matrice à w1 intervalles dans le sens de la colonne et w2 intervalles dans le sens de la ligne.    Img[row1:row2:w1, col1:col2:w2] = 0

référence

BlankTar FROM UMENTU IMPORT STUPID documentation opencv v2.1 Opérations sur les tableaux Photos gratuites Irasutoya

Recommended Posts

Créez une illusion rayée avec correction gamma pour Python3 et openCV3
Dessinez une illusion d'aquarelle avec détection des contours en Python3 et openCV3
Créer un LINE BOT avec Minette pour Python
Créer une couche pour AWS Lambda Python dans Docker
Créer un répertoire avec python
Créer une image à plage dynamique élevée (HDR) avec OpenCV et Python (Mertens, Robertson, Debevec)
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
Créer un compte enfant de connect with Stripe en Python
[Python] Créer une liste de dates et d'heures pour une période spécifiée
Créons un diagramme PRML avec Python, Numpy et matplotlib.
Procédure d'installation pour Python et Ansible avec une version spécifique
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Créez un outil d'analyse vidéo simple avec python wxpython + openCV
Bibliothèque pour spécifier un serveur de noms en python et dig
[Python] Créer un écran pour le code d'état HTTP 403/404/500 avec Django
Briller la vie avec Python et OpenCV
Créez un environnement virtuel avec Python!
Créer un environnement d'exécution Windows Python avec VScode + Remote WSL
Créez un sélecteur de couleurs pour la roue chromatique avec Python + Qt (PySide)
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Créez un simple OMR (lecteur de feuille de marque) avec Python et OpenCV
Créer un Ubuntu de démarrage USB avec un environnement Python pour l'analyse des données
Créer et renvoyer un fichier CSV CP932 pour Excel avec Chalice
Créer un décorateur de fonction Python avec Class
Créez une image factice avec Python + PIL.
Créons un environnement virtuel pour Python
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Capturer des images avec Pupil, python et OpenCV
Un mémo contenant Python2.7 et Python3 dans CentOS
Créer et décrypter du code César avec python
Créez diverses vidéos Photoshop avec Python + OpenCV ③ Créez diverses vidéos Photoshop
Créer un compteur de fréquence de mots avec Python 3.4
[Python] Lire des images avec OpenCV (pour les débutants)
[AWS] Créez un environnement Python Lambda avec CodeStar et faites Hello World
Créez votre propre caméra virtuelle avec Python + OpenCV et appliquez des effets originaux
Créer une lecture de feuille de notes avec Python OpenCV (Conseils pour bien lire)
Créez un environnement Python 3 avec pyenv sur Mac et affichez des graphiques Network X
Créez un arbre de décision à partir de 0 avec Python et comprenez-le (5. Entropie des informations)
[Python] Comment créer une liste de types de dictionnaire, ajouter / modifier / supprimer des éléments et extraire avec une instruction for
Hello World et détection de visage avec OpenCV 4.3 + Python
Créer un cadre avec un arrière-plan transparent avec tkinter [Python]
Raisonnement causal et recherche causale par Python (pour les débutants)
Obtenez un billet pour un parc à thème avec python
Construire un environnement python avec virtualenv et direnv
Procédure de création d'un LineBot réalisé avec Python
Créer un environnement virtuel avec conda avec Python
Installez OpenCV 4.0 et Python 3.7 sur Windows 10 avec Anaconda
Créer une page qui se charge indéfiniment avec python
[Note] Créez une classe de fuseau horaire sur une ligne avec python
Vous pouvez facilement créer une interface graphique même avec Python
Créer un environnement de construction python3 avec Sublime Text3
Créez un tableau de bord pour les appareils réseau avec Django!
Créer une carte Web en utilisant Python et GDAL
Créer une barre de couleurs avec Python + Qt (PySide)
Étapes pour créer un bot Twitter avec Python
Lancer un serveur Web avec Python et Flask