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.
python3 img_change.py input_directory output_directory
--Exemple
python3 img_change.py /data/imageset /data/imagser_change
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
│ └── ....
│
└──
――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