[PYTHON] Augmentation des données avec openCV

introduction

Comment allez-vous tous les jours chauds d'août?
Je suis sur le point de fondre, mais en écoutant la nouvelle chanson de Genshi Yonezu </ strong> Je code dans une pièce où je ne connais pas le jour et la nuit lorsque l'air est frais. </ Strong>

Que dites-vous les gars l'été?

Non, l'été est l'été de *** Augmentation des données! !! !! *** *** J'écrirai donc une méthode d'augmentation des données avec openCV au lieu d'un mémo.

C'est pour qui

python3 img_change.py input_directory output_directory

--Exemple

python3 img_change.py /data/imageset /data/imagser_change

programme

img_change.py


# -*- coding: utf-8 -*-
import numpy as np

import os
import cv2
import sys
import pathlib
import glob
from scipy.signal import qspline1d, qspline1d_eval, qspline2d,cspline2d


if len(sys.argv) != 3:
    print("python3 test.py inputdir outputdir")
    sys.exit()
else:   
    input_path = sys.argv[1]
    file_list = glob.glob(input_path + "/**/**.png ", recursive=True)
    for item in file_list:
        split_name = item.split('/')
        output_name = sys.argv[2] + "/" + split_name[-3] + "/" + split_name[-2] + "/" + split_name[-1]
        output_dir = sys.argv[2] + "/" + split_name[-3] + "/" + split_name[-2]
        pathlib.Path(output_dir).mkdir(parents=True,exist_ok=True)
        img = cv2.imread(item, cv2.IMREAD_UNCHANGED)  # read image
        
        #Partie de traitement d'image
        ###Augmente la luminosité de l'image
        chg_img=img*1.2 #Double la luminosité

        
        ###Redimensionnement de l'image
        height = img.shape[0]
        #img.shape[0]*0.5 moitié de la taille de l'original
        width = img.shape[1]
        chg_img = cv2.resize(img , (int(width), int(height)))

        ###CLAHE (redistribution afin que l'histogramme soit aussi uniformément distribué que possible)
        clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
        chg_img = clahe.apply(img)

        ###bruit
        row,col,ch = img.shape
        #blanc
        pts_x = np.random.randint(0, col-1 , 1000) #À partir de 0(col-1)Faites un millier de nombres aléatoires jusqu'à
        pts_y = np.random.randint(0, row-1 , 1000)
        img[(pts_y,pts_x)] = (255,255,255) #y,Notez que l'ordre est x

        #noir
        pts_x = np.random.randint(0, col-1 , 1000)
        pts_y = np.random.randint(0, row-1 , 1000)
        img[(pts_y,pts_x)] = (0,0,0)

        ###Déformer l'image
        chg_img = cv2.flip(img, 1) #Inverser horizontalement
        chg_img = cv2.flip(img, 0) #Inverser verticalement


        cv2.imwrite(output_name,chg_img )  #write image

--Dans le programme ci-dessus, le programme est créé avec la structure de répertoires suivante.

$ tree
/data
└── val
    ├── A1
    │   │  
    │   ├── 0.png
    │   ├── 1.png
    │   ├── 2.png
    │   └── ....
    ├── B1
    │   │  
    │   ├── 0.png
    │   ├── 1.png
    │   ├── 2.png
    │   └── ....    
    │            
    train
    ├── A1
    │   │  
    │   ├── 0.png
    │   ├── 1.png
    │   ├── 2.png
    │   └── ....
    ├── B1
    │   │  
    │   ├── 0.png
    │   ├── 1.png
    │   ├── 2.png
    │   └── ....    
    │              
    test
    ├── A1
    │   │  
    │   ├── 0.png
    │   ├── 1.png
    │   ├── 2.png
    │   └── ....
    ├── B1
    │   │  
    │   ├── 0.png
    │   ├── 1.png
    │   ├── 2.png
    │   └── ....    
    │            
    └── 

À la fin

――Il existe différentes manières de changer l'image, alors vérifiez-la avec le traitement d'image OpenCV. --Site de référence Traitement d'image avec Python ② Augmentation des données (image gonflée)

Recommended Posts

Augmentation des données avec openCV
Binariser les données photo avec OpenCV
Comment augmenter les données avec PyTorch
Analyse de données avec python 2
Détecter le retour du chat avec OpenCV
Binarisation avec OpenCV / Python
Lecture de données avec TensorFlow
Visualisation des données avec les pandas
Manipulation des données avec les Pandas!
Faire pivoter les sprites avec OpenCV
Mélangez les données avec les pandas
Normariser les données avec Scipy
Analyse de données avec Python
CHARGER DES DONNÉES avec PyMysql
TopView facile avec OpenCV
Trébucher avec opencv3 de homebrew
Afficher l'image après l'augmentation des données avec Pytorch
Exemple de données créées avec python
Incorporer des données audio avec Jupyter
Graphique des données Excel avec matplotlib (1)
Génération artificielle de données avec numpy
Reconnaissance faciale avec OpenCV de Python
"Traitement Apple" avec OpenCV3 + Python3
Essayez la détection des bords avec OpenCV
Extraire les données Twitter avec CSV
Édition d'image avec python OpenCV
Capture de caméra avec Python + OpenCV
Obtenez des données Youtube avec python
[Python] Utilisation d'OpenCV avec Python (basique)
Apprenez de nouvelles données avec PaintsChainer
Chargement de la vidéo en boucle avec opencv
Graphique des données Excel avec matplotlib (2)
Détection des bords en temps réel avec OpenCV
Utilisez Django pour enregistrer les données de tweet
Détection de visage avec Python + OpenCV
[PyTorch] Augmentation des données pour la segmentation
Obtenez des fonctionnalités d'image avec OpenCV
Reconnaissance faciale / coupe avec OpenCV
Essayez OpenCV avec Google Colaboratory
Essayez l'augmentation de l'effacement aléatoire des données
Nouvelle augmentation des données? [Grid Mix]
Création d'un classificateur en cascade avec opencv
Conseils de traitement des données avec Pandas
Utiliser OpenCV avec Python @Mac
Reconnaissance d'image avec Keras + OpenCV
Lire des données json avec python
Détection de visage d'anime avec OpenCV
Briller la vie avec Python et OpenCV
Enregistrer et charger des données avec joblib, pickle
Principes de base du traitement d'image en temps réel avec opencv
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
Réseau neuronal avec OpenCV 3 et Python 3
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
[Python] Utilisation d'OpenCV avec Python (détection des bords)
Effacez des couleurs spécifiques avec OpenCV + PySimpleGUI
Présentation d'OpenCV sur Mac avec homebrew
Comment gérer les données déséquilibrées