Python?imgaug庫安裝與使用教程(圖片加模糊光雨雪霧等特效)
簡介
imgaug:機器學(xué)習(xí)實驗中的圖像增強庫,特別是卷積神經(jīng)網(wǎng)絡(luò)。支持以多種不同方式增強圖像、關(guān)鍵點/地標(biāo)、邊界框、熱圖和分割圖。
安裝
在anaconda prompt里進行
pip install imgaug
看了幾篇文章,出錯的話可以先安裝依賴庫shapely
Overview
特效
Project 結(jié)構(gòu)
程序
圖片放入input
參考的源代碼(來源于網(wǎng)絡(luò))
main.py
# ###################源代碼#################### # !usr/bin/python # -*- coding: utf-8 -*- import cv2 from imgaug import augmenters as iaa import os # Sometimes(0.5, ...) 所有情況的 50% 中應(yīng)用給定的增強器 # e.g. Sometimes(0.5, GaussianBlur(0.3)) would blur roughly every second image. sometimes = lambda aug: iaa.Sometimes(0.5, aug) # 定義一組變換方法. seq = iaa.Sequential([ # 選擇0到5種方法做變換 iaa.SomeOf((0, 5), [ iaa.Fliplr(0.5), # 對50%的圖片進行水平鏡像翻轉(zhuǎn) iaa.Flipud(0.5), # 對50%的圖片進行垂直鏡像翻轉(zhuǎn) # superpixel representation 將一些圖像轉(zhuǎn)換為它們的超像素表示,每張圖像采樣 20 到 200 個超像素,但不要用它們的平均值替換所有超像素,只替換其中的一些(p_replace)。 sometimes( iaa.Superpixels( p_replace=(0, 1.0), n_segments=(20, 200) ) ), # Blur each image with varying strength using # gaussian blur (sigma between 0 and 3.0), # average/uniform blur (kernel size between 2x2 and 7x7) # median blur (kernel size between 3x3 and 11x11). iaa.OneOf([ iaa.GaussianBlur((0, 3.0)), iaa.AverageBlur(k=(2, 7)), iaa.MedianBlur(k=(3, 11)), ]), # Sharpen each image, overlay the result with the original # image using an alpha between 0 (no sharpening) and 1 # (full sharpening effect). iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)), # Same as sharpen, but for an embossing effect. iaa.Emboss(alpha=(0, 1.0), strength=(0, 2.0)), # Add gaussian noise to some images. # In 50% of these cases, the noise is randomly sampled per # channel and pixel. # In the other 50% of all cases it is sampled once per # pixel (i.e. brightness change). iaa.AdditiveGaussianNoise( loc=0, scale=(0.0, 0.05 * 255) ), # Invert each image's chanell with 5% probability. # This sets each pixel value v to 255-v. iaa.Invert(0.05, per_channel=True), # invert color channels # Add a value of -10 to 10 to each pixel. iaa.Add((-10, 10), per_channel=0.5), # Add random values between -40 and 40 to images, with each value being sampled per pixel: iaa.AddElementwise((-40, 40)), # Change brightness of images (50-150% of original value). iaa.Multiply((0.5, 1.5)), # Multiply each pixel with a random value between 0.5 and 1.5. iaa.MultiplyElementwise((0.5, 1.5)), # Improve or worsen the contrast of images. iaa.ContrastNormalization((0.5, 2.0)), iaa.imgcorruptlike.Saturate(severity=3), ], # do all of the above augmentations in random order random_order=True ) ], random_order=True) # apply augmenters in random order # 圖片文件相關(guān)路徑 path = './input/' savedpath = './output/' imglist = [] filelist = os.listdir(path) # 遍歷要增強的文件夾,把所有的圖片保存在imglist中 for item in filelist: img = cv2.imread(path + item) # print('item is ',item) # print('img is ',img) # images = load_batch(batch_idx) imglist.append(img) # print('imglist is ' ,imglist) print('all the picture have been appent to imglist') # 對文件夾中的圖片進行增強操作,循環(huán)10次 for count in range(10): images_aug = seq.augment_images(imglist) for index in range(len(images_aug)): filename = str(count) + str(index) + '.jpg' # 保存圖片 cv2.imwrite(savedpath + filename, images_aug[index]) print('image of count%s index%s has been writen' % (count, index))
簡易變換 試效果
test01.py
# ##############簡易變換################# # https://imgaug.readthedocs.io/en/latest/source/overview_of_augmenters.html import cv2 from imgaug import augmenters as iaa import os # Sometimes(0.5, ...) applies the given augmenter in 50% of all cases, # e.g. Sometimes(0.5, GaussianBlur(0.3)) would blur roughly every second image. # sometimes = lambda aug: iaa.Sometimes(0.5, aug) # 定義一組變換方法. seq = iaa.Sequential([ iaa.MotionBlur(k=15), # 運動模糊 # iaa.Clouds(), # 云霧 # iaa.imgcorruptlike.Fog(severity=1), # 多霧/霜 # iaa.imgcorruptlike.Snow(severity=2), # 下雨、大雪 # iaa.Rain(drop_size=(0.10, 0.20), speed=(0.2, 0.3)), # 雨 # iaa.Rain(speed=(0.3, 0.5)), # 雨 # iaa.Snowflakes(flake_size=(0.6, 0.7), speed=(0.02, 0.03)), # 雪點 # iaa.imgcorruptlike.Spatter(severity=2), # 濺 123水滴、45泥 # iaa.contrast.LinearContrast((0.5, 2.0), per_channel=0.5),# 對比度變?yōu)樵瓉淼囊话牖蛘叨? # iaa.imgcorruptlike.Brightness(severity=2), # 亮度增加 # iaa.imgcorruptlike.Saturate(severity=3), # 色彩飽和度 # iaa.FastSnowyLandscape(lightness_threshold=(100, 255),lightness_multiplier=(1.5, 2.0)), # 雪地 亮度閾值是從 uniform(100, 255)(每張圖像)和來自 uniform(1.5, 2.0)(每張圖像)的乘數(shù)采樣的。 # iaa.Cartoon(blur_ksize=3, segmentation_size=1.0, saturation=2.0, edge_prevalence=1.0), # 卡通 ]) # 圖片文件相關(guān)路徑 path = './input/' savedpath = './output_show/' imglist = [] filelist = os.listdir(path) # 遍歷要增強的文件夾,把所有的圖片保存在imglist中 for item in filelist: img = cv2.imread(path + item) # print('item is ',item) # print('img is ',img) # images = load_batch(batch_idx) imglist.append(img) # print('imglist is ' ,imglist) print('all the picture have been appent to imglist') # 對文件夾中的圖片進行增強操作,循環(huán)1次 for count in range(1): images_aug = seq.augment_images(imglist) for index in range(len(images_aug)): # filename = str(count) + str(index) + '.jpg' # 保存圖片 filename = str(filelist[index]) cv2.imwrite(savedpath + filename, images_aug[index]) print('image of count%s index%s has been writen' % (count, index))
使用 模糊光雨雪霧
運動模糊+雨雪霧天氣 2-3種
&
對比度 亮度 飽和度 選其一
my_augmentation.py
import cv2 from imgaug import augmenters as iaa import os # sometimes = lambda aug: iaa.Sometimes(0.5, aug) # 所有情況的 50% 中應(yīng)用給定的增強器 seq = iaa.Sequential([ # 選擇2到3種方法做變換 iaa.SomeOf((2, 3), [ iaa.imgcorruptlike.MotionBlur(severity=(1, 2)), # 運動模糊 # iaa.Clouds(), # 云霧 iaa.imgcorruptlike.Fog(severity=1), # 多霧/霜 # iaa.imgcorruptlike.Snow(severity=2), # 下雨、大雪 iaa.Rain(drop_size=(0.10, 0.15), speed=(0.1, 0.2)), # 雨 iaa.Snowflakes(flake_size=(0.1, 0.4), speed=(0.01, 0.03)), # 雪點 # iaa.FastSnowyLandscape(lightness_threshold=(100, 255),lightness_multiplier=(1.5, 2.0)), # 雪地 亮度閾值是從 uniform(100, 255)(每張圖像)和來自 uniform(1.5, 2.0)(每張圖像)的乘數(shù)采樣的。 這似乎產(chǎn)生了良好而多樣的結(jié)果。 # iaa.imgcorruptlike.Spatter(severity=5), # 濺 123水滴、45泥 # 對比度 亮度 飽和度 選其一 iaa.SomeOf((1, 1), [ iaa.imgaug.augmenters.contrast.LinearContrast((0.5, 2.0), per_channel=0.5), # 對比度變?yōu)樵瓉淼囊话牖蛘叨? iaa.imgcorruptlike.Brightness(severity=(1, 2)), # 亮度增加 iaa.imgcorruptlike.Saturate(severity=(1, 3)), # 色彩飽和度 ] ) ], # 隨機順序運行augmentations random_order=True ) ], random_order=True) # 隨機運行augmenters數(shù)量 # 圖片文件相關(guān)路徑 path = './input/' savedpath = './output/' imglist = [] filelist = os.listdir(path) # 遍歷要增強的文件夾,把所有的圖片保存在imglist中 for item in filelist: img = cv2.imread(path + item) # print('item is ',item) # print('img is ',img) # images = load_batch(batch_idx) imglist.append(img) # print('imglist is ' ,imglist) print('all the picture have been appent to imglist') for count in range(1): images_aug = seq.augment_images(imglist) for index in range(len(images_aug)): # 保存圖片 文件名和源文件相同 filename = str(filelist[index]) cv2.imwrite(savedpath + filename, images_aug[index]) print('image of count%s index%s has been writen' % (count, index))
else
對input里的原圖像重命名:00001.jpg或者1.jpg
重命名00001.jpg
Rename0001.py
# ###################文件重命名################# import os import re import sys path = r"./input" filelist = os.listdir(path) filetype = '.jpg' for file in filelist: print(file) for file in filelist: Olddir = os.path.join(path, file) print(Olddir) if os.path.isdir(Olddir): continue # os.path.splitext("path"):分離文件名與擴展名 filename = os.path.splitext(file)[0] filetype = os.path.splitext(file)[1] # zfill() 方法返回指定長度的字符串,原字符串右對齊,前面填充0 Newdir = os.path.join(path, filename.zfill(5) + filetype) # 數(shù)字5是定義為5位數(shù),可隨意修改需要的 os.rename(Olddir, Newdir)
重命名1.jpg
Rename1.py
# ###################文件重命名################ import os class BatchRename(): def __init__(self): self.path = './input/' # 圖片的路徑 def rename(self): filelist = os.listdir(self.path) filelist.sort() total_num = len(filelist) # 獲取文件中有多少圖片 i = 0 # 文件命名從哪里開始(即命名從哪里開始) for item in filelist: if item.endswith('.png'): src = os.path.join(self.path, item) dst = os.path.join(os.path.abspath(self.path), str(i) + '.png') try: os.rename(src, dst) print('converting %s to %s ...' % (src, dst)) i = i + 1 except Exception as e: print(e) print('rename dir fail\r\n') print('total %d to rename & converted %d jpgs' % (total_num, i)) if __name__ == '__main__': demo = BatchRename() # 創(chuàng)建對象 demo.rename() # 調(diào)用對象的方法
效果圖
input示例 00001.jpg
output示例 00001.jpg
input示例 00005.jpg
output示例 00005.jpg
到此這篇關(guān)于Python imgaug庫 安裝與使用教程(圖片加模糊光雨雪霧等特效)的文章就介紹到這了,更多相關(guān)Python imgaug庫安裝使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解pandas中缺失數(shù)據(jù)處理的函數(shù)
這篇文章主要為大家詳細介紹一下pandas中處理缺失數(shù)據(jù)的一些函數(shù),文中具體講解了一下各個函數(shù)的使用,需要的可以參考一下2022-01-01淺析Python 實現(xiàn)一個自動化翻譯和替換的工具
這篇文章主要介紹了Python 實現(xiàn)一個自動化翻譯和替換的工具,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04基于python2.7實現(xiàn)圖形密碼生成器的實例代碼
本文通過實例代碼給大家介紹了python2.7實現(xiàn)圖形密碼生成器,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧2019-11-11