ユーザ用ツール

サイト用ツール


初めてのopencv3

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
初めてのopencv3 [2017/10/21]
adash333 作成
初めてのopencv3 [2018/10/07] (現在)
ライン 2: ライン 2:
 Chainerで自前の画像データで機械学習を行う場合、 Chainerで自前の画像データで機械学習を行う場合、
  
-(1)画像を収集して分類して保存(なるべくjpgファイルで収集) +  - 画像を収集して分類して保存(なるべくjpgファイルで収集) 
-(2)画像をグレースケール化(カラーのままのこともある) +  ​- ​画像をグレースケール化(カラーのままのこともある) 
-(3)画像をリサイズ +  ​- ​画像をリサイズ 
-(4)chainerの、tuple_datasetで使用できる形に変換+  ​- ​chainerの、tuple_datasetで使用できる形に変換
  
 などの操作が必要であり、その過程が私のような初心者には難しい。 などの操作が必要であり、その過程が私のような初心者には難しい。
  
-画像のリサイズなどは、OpenCV3というモジュールで行うと、比較的簡単にできるらしいので、OpenCV3について学んでいきたいと思います。+画像のリサイズなどは、OpenCV3というモジュールで行うと、比較的簡単にできるらしいので、OpenCV3(with Python)について学んでいきたいと思います。
  
 +==== 開発環境 ====
 +Windows8.1\\
 +Python 3.5\\
 +Anaconda 4.4.0 (64-bit)\\
 +Chainer 2.0\\
 +
 +
 +===== OpenCV3をWindows8.1にインストール =====
 +2017/​8月時点で、Python3.5であれば、Anaconda Promptで、
 +<​code>​
 +conda install -c https://​conda.anaconda.org/​menpo opencv3
 +</​code>​
 +で、OpenCV3をインストール可能です。
 +
 +python3.6の場合については、[[WindowsにOpenCV3をインストール]]をご覧ください。
 +
 +
 +===== インストール後にOpenCV3を試してみる =====
 +(作成中)
 +
 +初めてのOpenCV_with_Python\\
 +http://​twosquirrel.mints.ne.jp/?​p=20039
 +
 +をご覧ください。
 +
 +==== Image.sizeとnp.array.shape ====
 +
 +PILのImage.sizeは、画像の横幅(width:​幅)と縦幅(height:​高さ)を返します。
 +
 +<​code>​
 +from PIL import Image
 +import numpy as np
 +
 +# 画像の読み込み
 +img = Image.open('​cat.jpg'​)
 +
 +# 画像の幅と高さを取得
 +width, height = img.size
 +print(img.size)
 +print(width)
 +print(height)
 +
 +# 元の画像と同じサイズのImageオブジェクトを作成する
 +img2 = Image.new('​RGB',​ (width, height))
 +
 +# img2をcat2.jpgという名前で保存する
 +img2.save(‘cat2.jpg’)
 +
 +</​code>​
 +
 +cv2(OpenCV)の場合\\
 +cv2.imreadで画像を読み込む。このとき画像はBGRになっている。\\
 +OpenCVで読み込んだ画像のタイプはnumpy arrayになっているため、画像の縦横を調べるときは、Numpyのshapeメソッドを用いる。
 +
 +<​code>​
 +%matplotlib inline
 +import cv2
 +import matplotlib.pyplot as plt
 +
 +img = cv2.imread(‘cat.jpg’)
 +
 +print(img.shape)
 +
 +# OpenCVの画像はデフォルトだとBGR画像であるため、
 +# matplotlib(こちらはRGB画像)で正しく表示するためには色変換が必要
 +# 具体的には、cv2.cvtColor()関数を用いる
 +cvimg = cv2.cvtColor(img,​ cv2.COLOR_BGR2RGB)
 +plt.imshow(cvimg)
 +</​code>​
 +
 +Numpyのnp.array.shapeは、行列の行(height:​縦に並んだ要素の個数)と列(width:​横に並んだ要素の個数)を返します。
 +
 +<​code>​
 +import numpy as np
 +a = np.arange(60).reshape(10,​ 6)
 +# 配列の形
 +a.shape
 +
 +# 要素数
 +a.size
 +
 +# 行数、列数の取り出し
 +# 画像をNumpy配列に変換したときは、以下を
 +# height, width = a.shape
 +# と書くことがある
 +nrow, ncol = a.shape
 +print(nrow)
 +print(ncol)
 +</​code>​
 +
 +
 +
 +<wrap hi>
 +sizeとshapeで、widthとheightの順番が逆になりますので、注意が必要です。
 +</​wrap>​
 +
 +PILとNumpyの組み合わせ\\
 +以下は、NumPy配列の扱いとなります。
 +<​code>​
 +from PIL import Image
 +import numpy as np
 +
 +# グレースケール画像にしてからNumpy配列に変換
 +im  = np.array(Image.open('​img.jpg'​).convert('​L'​))
 +print(im.shape)
 +print(im.dtype)
 +print(im)
 +
 +# カラー画像のままNumpy配列に変換
 +im  = np.array(Image.open('​img.jpg'​))
 +print(im.shape)
 +print(im.dtype)
 +print(im)
 +
 +
 +</​code>​
 +
 +
 +Chainer用の画像処理メモ(4)pythonでの画像の操作 "from PIL import Image"​\\
 +http://​twosquirrel.mints.ne.jp/?​p=20135
 +
 +
 +Chainer用の画像処理メモ(5)初めてのNumPy"​import numpy as np"\\
 +http://​twosquirrel.mints.ne.jp/?​p=20153
 +
 +[OpenCV Python]画像の幅、高さ、チャンネル数、depth取得
 +atinfinity edited this page on 27 Jul 2016\\
 +https://​github.com/​atinfinity/​lab/​wiki/​%5BOpenCV-Python%5D画像の幅、高さ、チャンネル数、depth取得
 +
 +
 +
 +
 +PythonとOpenCVで画像処理②【ウィンドウ、画像のサイズ変更】
 +\\
 +http://​rasp.hateblo.jp/​entry/​2016/​01/​22/​230852
 +
 +Python – NumPyで画像を配列として取得する\\
 +https://​endoyuta.com/​2015/​09/​27/​python-numpyで画像を配列として取得する/​
 +
 +
 +初めてのPython画像処理\\
 +https://​qiita.com/​uosansatox/​items/​4fa34e1d8d95d8783536
 +
 +2017-02-16 ​ —  Tag: Python / Pillow / Image
 +Python, Pillowを使って画像を一括でリサイズ(拡大・縮小)する方法\\
 +https://​www.outoutput.com/​programming/​python-pil-pillow-image-resize/​
 +
 +
 +2017-01-25 ​ —  Tag: Python
 +Pythonでファイル名の前後に文字列や連番を加えて一括で変更\\
 +https://​www.outoutput.com/​programming/​python-os-rename-glob-format-basename-splitext/​
 +
 +
 +
 +===== 参考文献 =====
 +Pyconjp 2014 OpenCVのpythonインターフェース入門\\
 +Masaki Hayashi,​Published on Sep 28, 2014\\
 +https://​www.slideshare.net/​payashim/​pyconjp-2014-opencv\\
 +→わかりやすいです。コードがPython2,​ OpenCV2なので、一部動かないことがありそうなので、Python3,​ OpenCV3のコードに少しだけ変換したものを、上記リンクに記載しました。
 +
 +
 +jupyter notebookでOpenCV 3.1を動かす(2)
 +データ解析
 +2017/​05/​07\\
 +http://​takacity.blog.fc2.com/​blog-entry-142.html
 +
 +→jupyter notebookでcv2で画像をインライン表示する場合は、
 +<​code>​
 +%matplotlib inline
 +import matplotlib.pyplot as plt
 +</​code>​
 +として、利用します。RGBとBGRに注意しながら、コードを記載します。
 +
 +OpenCVで画像の読み込みと表示、保存20160216\\
 +http://​rabbitfoot141.hatenablog.com/​entry/​2016/​02/​06/​123859
 +
 +===== pillowについてのリンク =====
 +OpenCVはインストールがややこしいことがあります。pillowという、あらかじめAnacondaに入っているモジュールも、OpenCVと似たような画像処理を行うことができます。
 +
 +PIL/Pillow チートシート
 +20170307
 +\\
 +https://​qiita.com/​pashango2/​items/​145d858eff3c505c100a
 +
 +2017-02-16 ​ —  Tag: Python / Pillow / Image
 +Python, Pillowを使って画像を一括でリサイズ(拡大・縮小)する方法\\
 +https://​www.outoutput.com/​programming/​python-pil-pillow-image-resize/​
 +
 +
 +http://​pc.atsuhiro-me.net/​entry/​2015/​04/​30/​215643?​amp=1
 +===== リンク =====
  
  

初めてのopencv3.1508588180.txt.gz · 最終更新: 2018/10/07 (外部編集)