初めてのopencv3
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| 初めてのopencv3 [2017/10/21] – adash333 | 初めてのopencv3 [2018/10/07] (現在) – 外部編集 127.0.0.1 | ||
|---|---|---|---|
| 行 2: | 行 2: | ||
| Chainerで自前の画像データで機械学習を行う場合、 | Chainerで自前の画像データで機械学習を行う場合、 | ||
| - | (1)画像を収集して分類して保存(なるべくjpgファイルで収集) | + | - 画像を収集して分類して保存(なるべくjpgファイルで収集) |
| - | (2)画像をグレースケール化(カラーのままのこともある) | + | |
| - | (3)画像をリサイズ | + | |
| - | (4)chainerの、tuple_datasetで使用できる形に変換 | + | |
| などの操作が必要であり、その過程が私のような初心者には難しい。 | などの操作が必要であり、その過程が私のような初心者には難しい。 | ||
| 行 26: | 行 26: | ||
| python3.6の場合については、[[WindowsにOpenCV3をインストール]]をご覧ください。 | python3.6の場合については、[[WindowsにOpenCV3をインストール]]をご覧ください。 | ||
| + | |||
| + | |||
| + | ===== インストール後にOpenCV3を試してみる ===== | ||
| + | (作成中) | ||
| + | |||
| + | 初めてのOpenCV_with_Python\\ | ||
| + | http:// | ||
| + | |||
| + | をご覧ください。 | ||
| + | |||
| + | ==== Image.sizeとnp.array.shape ==== | ||
| + | |||
| + | PILのImage.sizeは、画像の横幅(width: | ||
| + | |||
| + | < | ||
| + | from PIL import Image | ||
| + | import numpy as np | ||
| + | |||
| + | # 画像の読み込み | ||
| + | img = Image.open(' | ||
| + | |||
| + | # 画像の幅と高さを取得 | ||
| + | width, height = img.size | ||
| + | print(img.size) | ||
| + | print(width) | ||
| + | print(height) | ||
| + | |||
| + | # 元の画像と同じサイズのImageオブジェクトを作成する | ||
| + | img2 = Image.new(' | ||
| + | |||
| + | # img2をcat2.jpgという名前で保存する | ||
| + | img2.save(‘cat2.jpg’) | ||
| + | |||
| + | </ | ||
| + | |||
| + | cv2(OpenCV)の場合\\ | ||
| + | cv2.imreadで画像を読み込む。このとき画像はBGRになっている。\\ | ||
| + | OpenCVで読み込んだ画像のタイプはnumpy arrayになっているため、画像の縦横を調べるときは、Numpyのshapeメソッドを用いる。 | ||
| + | |||
| + | < | ||
| + | %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, | ||
| + | plt.imshow(cvimg) | ||
| + | </ | ||
| + | |||
| + | Numpyのnp.array.shapeは、行列の行(height: | ||
| + | |||
| + | < | ||
| + | import numpy as np | ||
| + | a = np.arange(60).reshape(10, | ||
| + | # 配列の形 | ||
| + | a.shape | ||
| + | |||
| + | # 要素数 | ||
| + | a.size | ||
| + | |||
| + | # 行数、列数の取り出し | ||
| + | # 画像をNumpy配列に変換したときは、以下を | ||
| + | # height, width = a.shape | ||
| + | # と書くことがある | ||
| + | nrow, ncol = a.shape | ||
| + | print(nrow) | ||
| + | print(ncol) | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | <wrap hi> | ||
| + | sizeとshapeで、widthとheightの順番が逆になりますので、注意が必要です。 | ||
| + | </ | ||
| + | |||
| + | PILとNumpyの組み合わせ\\ | ||
| + | 以下は、NumPy配列の扱いとなります。 | ||
| + | < | ||
| + | from PIL import Image | ||
| + | import numpy as np | ||
| + | |||
| + | # グレースケール画像にしてからNumpy配列に変換 | ||
| + | im = np.array(Image.open(' | ||
| + | print(im.shape) | ||
| + | print(im.dtype) | ||
| + | print(im) | ||
| + | |||
| + | # カラー画像のままNumpy配列に変換 | ||
| + | im = np.array(Image.open(' | ||
| + | print(im.shape) | ||
| + | print(im.dtype) | ||
| + | print(im) | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | Chainer用の画像処理メモ(4)pythonでの画像の操作 "from PIL import Image" | ||
| + | http:// | ||
| + | |||
| + | |||
| + | Chainer用の画像処理メモ(5)初めてのNumPy" | ||
| + | http:// | ||
| + | |||
| + | [OpenCV Python]画像の幅、高さ、チャンネル数、depth取得 | ||
| + | atinfinity edited this page on 27 Jul 2016\\ | ||
| + | https:// | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | PythonとOpenCVで画像処理②【ウィンドウ、画像のサイズ変更】 | ||
| + | \\ | ||
| + | http:// | ||
| + | |||
| + | Python – NumPyで画像を配列として取得する\\ | ||
| + | https:// | ||
| + | |||
| + | |||
| + | 初めてのPython画像処理\\ | ||
| + | https:// | ||
| + | |||
| + | 2017-02-16 | ||
| + | Python, Pillowを使って画像を一括でリサイズ(拡大・縮小)する方法\\ | ||
| + | https:// | ||
| + | |||
| + | |||
| + | 2017-01-25 | ||
| + | Pythonでファイル名の前後に文字列や連番を加えて一括で変更\\ | ||
| + | https:// | ||
| + | |||
| ===== 参考文献 ===== | ===== 参考文献 ===== | ||
| + | Pyconjp 2014 OpenCVのpythonインターフェース入門\\ | ||
| + | Masaki Hayashi, | ||
| + | https:// | ||
| + | →わかりやすいです。コードがPython2, | ||
| + | |||
| + | |||
| + | jupyter notebookでOpenCV 3.1を動かす(2) | ||
| + | データ解析 | ||
| + | 2017/ | ||
| + | http:// | ||
| + | |||
| + | →jupyter notebookでcv2で画像をインライン表示する場合は、 | ||
| + | < | ||
| + | %matplotlib inline | ||
| + | import matplotlib.pyplot as plt | ||
| + | </ | ||
| + | として、利用します。RGBとBGRに注意しながら、コードを記載します。 | ||
| + | |||
| + | OpenCVで画像の読み込みと表示、保存20160216\\ | ||
| + | http:// | ||
| + | |||
| + | ===== pillowについてのリンク ===== | ||
| + | OpenCVはインストールがややこしいことがあります。pillowという、あらかじめAnacondaに入っているモジュールも、OpenCVと似たような画像処理を行うことができます。 | ||
| + | |||
| + | PIL/Pillow チートシート | ||
| + | 20170307 | ||
| + | \\ | ||
| + | https:// | ||
| + | |||
| + | 2017-02-16 | ||
| + | Python, Pillowを使って画像を一括でリサイズ(拡大・縮小)する方法\\ | ||
| + | https:// | ||
| + | http:// | ||
| ===== リンク ===== | ===== リンク ===== | ||
初めてのopencv3.1508588482.txt.gz · 最終更新: 2018/10/07 (外部編集)
