[PYTHON] Datenerweiterung mit openCV

Einführung

Wie geht es euch allen an den heißen Tagen im August? </ br> Ich bin kurz davor zu schmelzen, aber während ich [Genshi Yonezu's neues Lied] höre (https://youtu.be/XeFQJ6-XoD0) </ strong> Ich codiere in einem Raum, in dem ich Tag und Nacht nicht weiß, wann die Luft kühl ist. </ Strong>

Was sagt ihr Sommer?

Nein, Sommer ist der Sommer der *** Datenerweiterung! !! !! *** *** Also werde ich eine Methode zur Datenerweiterung mit openCV anstelle eines Memos schreiben.

Für wen ist das

python3 img_change.py input_directory output_directory

--Beispiel

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

Programm

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
        
        #Bildverarbeitungsteil
        ###Erhöhen Sie die Helligkeit des Bildes
        chg_img=img*1.2 #Verdoppeln Sie die Helligkeit

        
        ###Bildgröße ändern
        height = img.shape[0]
        #img.shape[0]*0.5 halb so groß wie das Original
        width = img.shape[1]
        chg_img = cv2.resize(img , (int(width), int(height)))

        ###CLAHE (Umverteilung, damit das Histogramm so gleichmäßig wie möglich verteilt ist)
        clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
        chg_img = clahe.apply(img)

        ###Lärm
        row,col,ch = img.shape
        #Weiß
        pts_x = np.random.randint(0, col-1 , 1000) #Von 0(col-1)Machen Sie tausend Zufallszahlen bis zu
        pts_y = np.random.randint(0, row-1 , 1000)
        img[(pts_y,pts_x)] = (255,255,255) #y,Beachten Sie, dass die Reihenfolge x ist

        #schwarz
        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)

        ###Verzerren Sie das Bild
        chg_img = cv2.flip(img, 1) #Horizontal umkehren
        chg_img = cv2.flip(img, 0) #Vertikal umkehren


        cv2.imwrite(output_name,chg_img )  #write image
$ 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
    │   └── ....    
    │            
    └── 

Am Ende

――Es gibt verschiedene Möglichkeiten, das Bild zu ändern. Probieren Sie es mit der OpenCV-Bildverarbeitung aus. --Referenzseite Bildverarbeitung mit Python ② Datenerweiterung (aufgeblasenes Bild)

Recommended Posts

Datenerweiterung mit openCV
Binarisieren Sie Fotodaten mit OpenCV
Aufblasen von Daten (Datenerweiterung) mit PyTorch
Datenanalyse mit Python 2
Katze zurück mit OpenCV erkennen
Binarisierung mit OpenCV / Python
Daten mit TensorFlow lesen
Datenvisualisierung mit Pandas
Datenmanipulation mit Pandas!
Sprites mit OpenCV drehen
Daten mit Pandas mischen
Daten mit Scipy normieren
Datenanalyse mit Python
LADEN SIE DATEN mit PyMysql
Einfache TopView mit OpenCV
Stolpern Sie mit opencv3 von Homebrew
Zeigen Sie das Bild nach der Datenerweiterung mit Pytorch an
Mit Python erstellte Beispieldaten
Betten Sie Audiodaten in Jupyter ein
Zeichnen Sie Excel-Daten mit matplotlib (1)
Künstliche Datengenerierung mit Numpy
Gesichtserkennung mit OpenCV von Python
"Apple-Verarbeitung" mit OpenCV3 + Python3
Versuchen Sie die Kantenerkennung mit OpenCV
Extrahieren Sie Twitter-Daten mit CSV
Bildbearbeitung mit Python OpenCV
Kameraerfassung mit Python + OpenCV
Holen Sie sich Youtube-Daten mit Python
[Python] Verwenden von OpenCV mit Python (Basic)
Lernen Sie neue Daten mit PaintsChainer
Loop-Video-Laden mit opencv
Zeichnen Sie Excel-Daten mit matplotlib (2)
Echtzeit-Kantenerkennung mit OpenCV
Verwenden Sie Django, um Tweet-Daten zu speichern
Gesichtserkennung mit Python + OpenCV
[PyTorch] Datenerweiterung zur Segmentierung
Holen Sie sich Bildfunktionen mit OpenCV
Gesichtserkennung / Schneiden mit OpenCV
Probieren Sie OpenCV mit Google Colaboratory aus
Versuchen Sie die zufällige Löschung von Daten
Neue Datenerweiterung? [Grid Mix]
Erstellung eines Kaskadenklassifikators mit opencv
Datenverarbeitungstipps mit Pandas
Verwenden von OpenCV mit Python @Mac
Bilderkennung mit Keras + OpenCV
Lesen von JSON-Daten mit Python
Anime-Gesichtserkennung mit OpenCV
Leuchtendes Leben mit Python und OpenCV
Speichern und laden Sie Daten mit joblib, pickle
Grundlagen der Echtzeit-Bildverarbeitung mit opencv
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Neuronales Netzwerk mit OpenCV 3 und Python 3
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Löschen Sie bestimmte Farben mit OpenCV + PySimpleGUI
Einführung von OpenCV in Mac mit Homebrew
Umgang mit unausgeglichenen Daten