内容としてはjpegファイル読み込み→グレイスケール化→バイラテラルフィルタ→png形式で保存しています。
途中のバイラテラルフィルタはjpegのモスキートノイズの軽減を狙っています。オプションの数値は適時調整することになります。
#!/usr/bin/env python3
# coding: utf8
#
# jpegファイルをpngに変換
#
import os
import sys
import glob
import cv2
def jpeg_to_png(in_path, out_path):
print("jpeg_to_png:{} {}".format(in_path, out_path))
img = cv2.imread(in_path, cv2.IMREAD_GRAYSCALE) # カラーの場合, cv2.IMREAD_GRAYSCALEを削る
bi = cv2.bilateralFilter(img, 1, 20, 20)
cv2.imwrite(out_path, bi)
if __name__ == '__main__':
in_path = "./"
out_path = "./png/"
args = sys.argv
length = len(args)
in_path = args[1] if length > 1 else in_path
out_path = args[2] if length > 2 else out_path
if (os.path.basename(out_path) == "" and not os.path.isdir(out_path)):
# ディレクトリ作成
os.mkdir(out_path)
if (os.path.isfile(in_path)):
# ファイルモード
if (os.path.basename(out_path) == ""):
name = os.path.splitext(os.path.basename(in_path))[0] + ".png"
o = os.path.join(out_path, name)
jpeg_to_png(in_path, o)
else:
# ディレクトリモード
s = in_path + "*.jp*g"
for f in glob.glob(s):
name = os.path.splitext(os.path.basename(f))[0] + ".png"
o = os.path.join(out_path, name)
jpeg_to_png(f, o)
コメント