#author("2017-09-27T09:25:21+09:00","default:takataka","takataka") *SJS2017 ex03 [#f69bd8f1] 課題いっぱいありますが,1回で全部終わらせようという意図ではありません. 自分で進められるひとはどんどん先へ進めたらよいですが. #contents **これまでの分 [#kbc5dcd1] - 以前の分を全て報告してokをもらってから,今回分にすすみましょう. **課題A [#w83b99ab] Python + OpenCV 入門 ***step1 プログラムを書く [#dd5c8e25] #gist(f4f1a5309d145883c9a3) ***step2 実行する [#n96ed989] まず,右の画像を手元に保存します. &ref(SJS/blackuni3.png); そして,次のようにプログラムを実行します. $ python displayimage.py hoge.png という画像ができてるので,眺めます $ open hoge.png 注1: 以下参照 $ display hoge.png & 注2: ImageMagick の display コマンドを使う場合 注1: open は Mac OS X 独自のコマンド.関連づけられているアプリケーションに渡して実行.デフォルトでは「プレビュー」が開く. OpenCV に関する情報は,http://docs.opencv.org/3.3.0/ などへどうぞ.または,「opencv python ほげ」等でググるのもよいでしょう. **課題B [#e4ff231e] Python + OpenCV 入門(2) 上記のプログラムを次のように変更しよう + 画像の向きの反転のかわりに,画素値の反転をさせた画像を作り,それを表示&出力する.ヒント: OpenCV+Python では画素値を Numpy の array に格納します.それがわかれば 255 から引くだけなので1行で書けます. + 元の画像と,それを上下反転させた画像の平均(両者を足して2で割る)を作り,それを表示したり出力する. --まずは単純に足して2で割ってみよう.うまくいかず化け猫がでてくるはず. --うまくいかない理由を考えよう.たとえば img の内容を表示させてみると #pre{{ In [2]: img Out[2]: array([[[161, 143, 142], 中略 [160, 152, 152]]], dtype=uint8) }} となっていて,dtype が uint8 となっている.これが怪しい. +元の画像と,それを上下反転させた画像の平均をちゃんと作れるようにしよう. -- 画素値の入っている np.array の dtype を 変えるのがよいだろう.ヒント: #pre{{ In [1]: x = np.array([0,100,200], dtype=np.uint8) In [2]: x Out[2]: array([0, 100, 200], dtype=uint8) In [6]: x.dtype Out[6]: dtype('uint8') In [7]: y = np.array([100,100,100], dtype=np.uint8) In [8]: z = x + y In [9]: z Out[9]: array([100, 200, 44], dtype=uint8) In [10]: zz = x.astype(float) + y In [11]: zz Out[11]: array([ 100., 200., 300.]) In [12]: zz = (x.astype(float) + y)/2 In [13]: zz Out[13]: array([ 50., 100., 150.]) In [14]: zz.astype(np.uint8) Out[14]: array([ 50, 100, 150], dtype=uint8) }} **課題C [#x74aa91c] Python + OpenCV 入門(3) 適当な画像に適当な処理を施すプログラムを作りなさい.ただし,画像の拡大と縮小をする処理を必ず入れること.