2018年11月3日土曜日

開発環境

実践 コンピュータビジョン (Jan Erik Solem (著)、相川 愛三 (翻訳)、オライリージャパン)の1章(基本的な画像処理)、1.6(演習問題)3.を取り組んでみる。

コード(Emacs)

Python 3

#!/usr/bin/env python3
from PIL import Image
import numpy as np
from scipy import ndimage
import imageio
import imtools
import pprint

print('3.')

name = 'ginza'
im = np.array(Image.open(f'{name}.jpg'))
im2 = np.zeros(im.shape, dtype='uint8')

for i in range(3):
    im2[:, :, i] = ndimage.filters.gaussian_filter(im[:, :, i], 5)

im2 = im / im2

imageio.imwrite(f'{name}_self_quotient.jpg', im2)

# 警告が出るから np.uint8(im2)、im2.astype('uint8')でfloat64を変換
# そうしたら画像が真っ黒になった
# 解決方法がわかるまでは変換しないことに
# imageio.imwrite(f'{name}_self_quotient.jpg', np.uint8(im2))
# imageio.imwrite(f'{name}_self_quotient.jpg', im2.astype('uint8'))

入出力結果(Terminal, Jupyter(IPython))

$ ./sample3.py
3.
WARNING:root:Lossy conversion from float64 to uint8. Range [0.0, 4.933333333333334]. Convert image to uint8 prior to saving to suppress this warning.
$

0 コメント:

コメントを投稿