読者です 読者をやめる 読者になる 読者になる
自分のための備忘録的なブログです。

Ubuntu14.04LTS および Win10 を使って、ディープラーニングの勉強をしています。記載されているコードは、他の OS には互換性がない可能性があります。


DNN:
マシン性能別 学習速度の比較, TFチュートリアルをmodifyする

python3:
オブジェクト指向プログラミングとは, モジュールとインポート、パスを通す, システムコマンド(os), ファイル・フォルダ名取得, 画像の前処理,

Ubuntu14 の初期設定:
Ubuntu14初期設定, 初期設定-2, cudaなども,

CNNディープラーニング前処理 画像をDL用に処理する。

フォルダ内のすべてのファイル取得(python

import glob
glob.glob('*')

 

for FILENAME in glob.glob('*'):
    print(FILENAME)

 イマイチ違いがわかってない。

 2.は for loop を回してるので遅いのかな?

 

Bash

for dir in $(ls .);do echo $dir; done

 

再帰的にディレクトリ構造を得る

# -*- coding:utf-8 -*-

import os

def get_abspath_recursive(directory):

    for root, dirs, files in os.walk(directory):

        yield root

        for file in files:

            yield os.path.join(root, file)

 

for file in get_abspath_recursive('.'):

    print(file)

参考: http://qiita.com/suin/items/cdef17e447ceeff6e79d

 

 

画像の表示, python3

# -*- coding:utf-8 -*-

from PIL import Image

import matplotlib.pyplot as plt

im = Image.open("xxx.jpg")

plt.imshow(im)

plt.show() 

 

 

画像のリサイズ, python3

# -*- coding:utf-8 -*-

from PIL import Image

im = Image.open("xxx.jpg").resize(  (100.100) )

im.save("NEWFILENAME.jpg")

  ※トリミングではないので、画像が変形する。

 

 

 

あるフォルダ内のすべての ,jpg ファイルを、短辺で正方形に crop する。

 

 Cropされたファイルはカレントディレクトリに入る。(python3)

 

 

# -*- coding: utf-8 -*-

'''フォルダ内にある .jpg を短辺で正方形に crop
'''

import os
import cv2


def main():
    for file_name in os..listdir('.'):
        root, ext = os.path.splitext(file_name)

 

        if ext == '.jpg':
            img = cv2.imread(file_name)
            height, width, channels = img.shape

            if height == width:
                cv2.imwrite("cropped_" + file_name, img)
            elif height > width:
                Start = (height - width) // 2
                End   = Start + width
                clp     = img[Start:End, :]
                cv2.imwrite("cropped_" + file_name ,clp)
            else:
                Start = (width - height) // 2
                End   = Start + height
                clp    = img[:, Start:End]
                cv2.imwrite("cropped_" + file_name ,clp)

        else:

            pass

 
if __name__ == '__main__':
    main()

 参考: http://qiita.com/satoshicano/items/bba9594a1203e24e2a31

 

 

あるフォルダ内のすべての .jpg ファイルを、長辺で正方形に crop? する。

 Cropされたファイルはカレントディレクトリに入る。(python3)

 

# -*- coding: utf-8 -*-


'''フォルダ内にある .jpg を長辺で正方形に crop'''

 

import os
import cv2
import numpy as np

 

def main():

    for file_name in os.listdir('.'):

        root, ext = os.path.splitext(file_name)

        if ext == '.jpg':

            img = cv2.imread(file_name)

            height, width, channels = img.shape

            tmp = img[:, :] 

 

            if height > width:

                size = height

                limit = width
            else:

                size = width

                limit = height

 

            start = int( (size - limit) / 2)

            fin = int( (size + limit) / 2)

 

            new_img = cv2.resize(np.zeros( (1, 1, 3), np.uint8), (size, size) )

            if size == height:

                new_img[:, start:fin] = tmp

                cv2.imwrite("squared_" + file_name ,new_img)

            else:

                new_img[start:fin, :] = tmp

                cv2.imwrite("squared_" + file_name ,new_img)

        else:

            pass

 

if __name__ == '__main__':

    main()

 

カレントディレクトリの、すべての .jpg ファイルを rotate させるスクリプト(python3)

# -*- coding: utf-8 -*-
'''
フォルダ内にある .png, .jpeg, .jpg を rotate して保存する。
'''

import os

from PIL import Image

 

def main():

    for file_name in os.listdir('.'):

        root, ext = os.path.splitext(file_name)

 

        if ext == '.jpg':

            img = Image.open(file_name)

            for Degree in (-15, -12, -8, -4, -2, 0, 2, 4, 8, 12, 15):

# for Degree in (この中に、保存したい角度を入れる。)

                Rotate = img.rotate(Degree)

                Rotate.save("rot_" + str(Degree) + file_name)

 

 

        else:

            pass 

 

if __name__ == '__main__':

    main()

 

 カレントディレクトリのすべての .jpg ファイルを左右 flip するスクリプト

 

 # -*- coding: utf-8 -*-
'''
フォルダ内にある .jpg を flip して保存する。
'''

import os

from PIL import Image

 

def main():

    for file_name in os.listdir('.'):

        root, ext = os.path.splitext(file_name)

 

        if ext == u'.jpg':
            img = Image.open(file_name)
            tmp = img.transpose(Image.FLIP_LEFT_RIGHT)
            tmp.save("flipped_" + file_name)

        else:

            pass

 

if __name__ == '__main__':

    main()

 

カレントディレクトリの全ての .jpg ファイルで、画像の彩度・明度・コントラストを変更して画像枚数を増やす。

# -*- coding: utf-8 -*-
'''カレントディレクトリの .jpg の彩度、明度、コントラストを変更する'''

import os
from PIL import Image
from PIL import ImageEnhance

def main():

#彩度:saturation を変更して保存する。

    for file_name in os.listdir('.'):
        root, ext = os.path.splitext(file_name)

        if ext == u'.jpg':

            img = ImageEnhance.Color(Image.open(file_name))

            for i in (0.5, 1.5):

                tmp = img.enhance(i)

                j = str(i)

                tmp.save("_Sat_" + j + file_name)

            else:

                pass

 

#明度: brightness を変更して保存する

    for file_name in os.listdir('.'):

        root, ext = os.path.splitext(file_name)

        if ext == u'.jpg':

            img = ImageEnhance.Brightness(Image.open(file_name))

            for i in (0.5, 1.2):

                tmp = img.enhance(i)

                j = str(i)

                tmp.save("_Brt_" + j + file_name)

        else:

            pass

 

#コントラスト: contrast を変更して保存する

    for file_name in os.listdir('.'):

        root, ext = os.path.splitext(file_name)

        if ext == u'.jpg':

            img = ImageEnhance.Contrast(Image.open(file_name))

            for i in (0.5, 1.2):

                tmp = img.enhance(i)

                j = str(i)

                tmp.save("_Cnt_" + j + file_name)

        else:

            pass

 

if __name__ == '__main__':
    main()

 

#参考: https://kazutoyo.jp/archives/74