k01ken’s b10g

He110 W0r1d!

OpenCV(Python)を用いてディレクトリ内にある画像をリサイズする

開発環境は、Windows7 Professional(32bit) + Python 2.7.10。

imgディレクトリに画像を入れて、その画像のサイズをすべて、指定のサイズ(幅は250px、高さは幅に合わせて自動調整)へリサイズするスクリプトを作ります。縮小する前に、画像を平滑化すると、滑らかになります。

ディレクトリ構成

-test.py(下記のスクリプト)
+img
 -test.jpg(適当な画像)
# -*- coding: utf-8 -*-

import cv2
import numpy as np
import glob

arr = []
arr.extend(glob.glob("./img/*.jpeg"))
arr.extend(glob.glob("./img/*.jpg"))
arr.extend(glob.glob("./img/*.png"))

for i in arr:
	img = cv2.imread(i)
	height, width = img.shape[:2]
	if width > 250:
	  x = float(width) / 250
	  width = 250
	  height = int(height / x)

	  img2 = cv2.GaussianBlur(img,(5,5),0)

          img2 = cv2.resize(img2,(width, height))
	  cv2.imwrite(i,img2)

■参考サイト
画像をリサイズする | OpenCV画像解析入門
[OpenCV Python]画像の幅、高さ、チャンネル数、depth取得 · atinfinity/lab Wiki · GitHub
Pythonでフォルダ内のファイルリストを取得する
要素の追加と連結(appendメソッド, extendメソッド) - リスト - Python入門
画像の平滑化 — OpenCV-Python Tutorials
Image Filtering — OpenCV 3.0.0-dev documentation