画像を縦横任意のpx数シフトして出力
img_shift.py
# -*- coding: utf-8 -*- #画像をシフトして保存する #第一引数:画像ファイルパス #第二引数:縦シフトpx (rows) #第三引数:横シフトpx (cols) import cv2 import numpy as np import sys import os argvs = sys.argv #引数取得 argc = len(argvs) #引数の個数 if argc != 4: print('img_shiftについて\n') print('引数1 : 画像ファイルパス\n引数2 : 縦シフトpx (rows)\n引数3 : 横シフトpx (cols)\n') input('終了します。何かキーをおしてください。。。\n') sys.exit() img = cv2.imread(argvs[1]) #画像読み込み rows, cols, channels = img.shape M = np.float32([[1,0,argvs[3]],[0,1,argvs[2]]]) #変換 dst = cv2.warpAffine(img,M,(cols,rows)) #cols,rowsは出力画像サイズ filename, ext = os.path.splitext(os.path.basename(argvs[1])) cv2.imwrite(filename + '_shift_row' + argvs[2] + 'col' + argvs[3] + ext, dst) #変換画像保存
出力結果
↓ img_shift.py test1.jpg 10 20
フォルダ内に含まれるJPG画像を平均して出力
img_ave.py
# -*- coding: utf-8 -*- #フォルダ内のjpg画像を平均して別名で保存 #第一引数:画像フォルダパス(jpg画像のみ抽出して平均) import cv2 import numpy as np import glob import sys argvs = sys.argv #引数取得 argc = len(argvs) #引数の個数 if argc != 2: print('img_aveについて\n') print('引数1 : 画像ファイルが入ったフォルダのパス\n') input('終了します。何かキーをおしてください。。。\n') sys.exit() jpg_list = glob.glob(argvs[1] + '/*.jpg') #フォルダ内ファイル取得 if len(jpg_list) != 0: img0 = cv2.imread(jpg_list[0]) #画像読み込み サイズチェック rows, cols, channels = img0.shape img_ave = np.zeros((rows, cols, channels)) #平均値入れる箱を初期化 for i in jpg_list: img_tmp = cv2.imread(i).astype(int) if img_tmp.shape != img0.shape: print(i + ' : 画像ファイルサイズが異なります。\n全て同じサイズにしてください。\n') input('終了します。何かキーをおしてください。。。\n') sys.exit() else: img_ave = img_ave + img_tmp img_ave = img_ave / len(jpg_list) cv2.imwrite('img_ave.jpg', img_ave) #平均画像保存 else: print('エラー:JPGファイルのみの対応です。。。') input('終了します。何かキーをおしてください。。。\n') sys.exit()
出力結果
↓