ユーザ用ツール

サイト用ツール


opencvで画像切り抜き

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
opencvで画像切り抜き [2017/11/28]
adash333 [OpenCV3をWindows8.1にインストール]
opencvで画像切り抜き [2018/10/07] (現在)
ライン 23: ライン 23:
 画像データはnumpyのarray(多次元配列)として格納されている ​ 画像データはnumpyのarray(多次元配列)として格納されている ​
  
-入出力の可視化 
-画像の入力は、cv2.imread() → numpy.ndarray型の画像データ 
- 
-OpencCVの画像データの構造 
-カラー画像:(height x width x channels) の3次元配列 
-グレー画像:(height x width)の2次元配列 
  
 まず、Lenna.pngを、https://​en.wikipedia.org/​wiki/​File:​Lenna.pngからダウンロードしておきます。 まず、Lenna.pngを、https://​en.wikipedia.org/​wiki/​File:​Lenna.pngからダウンロードしておきます。
  
 +{{:​pasted:​20171128-222846.png}}
  
 +ここでは、Lenna.pngを、C:/​py/​opencv3/​ フォルダに保存したものとします。
 +
 +{{:​pasted:​20171128-223007.png}}
 +
 +Windowsのスタートボタンから、Anaconda Promptを開いて、以下のコードを入力して、Jupyter notebookを起動。
 +
 +<​code>​
 +cd c:/​py/​opencv3/​
 +jupyter notebook
 +</​code>​
 +
 +以下のように、Lenna.pngがあるフォルダが表示されるので、画面右上の、New > Python 3 をクリックして、新しいipynbファイルを作成。
 +
 +{{:​pasted:​20171128-223137.png}}
 +
 +画面上の方の、「Untitled」をクリックして、「opencv3_cut」に変更
 +
 +{{:​pasted:​20171128-223316.png}}
 +
 +以下のコードを入力して、Shift + Enter
  
 <​code>​ <​code>​
ライン 41: ライン 56:
 print(img.shape) print(img.shape)
 </​code>​ </​code>​
 +
 +{{:​pasted:​20171128-224252.png}}
 +
 +入出力の可視化\\
 +画像の入力は、cv2.imread() → numpy.ndarray型の画像データ
 +
 +OpencCVの画像データの構造\\
 +カラー画像:(height x width x channels) の3次元配列\\
 +グレー画像:(height x width)の2次元配列
 +
 +今回は、hight 512, width 512, channels 3のカラー画像ですので、(512,​ 512, 3)という結果になりました。
 +
 +画像をグレースケールで読み込みたい場合は、cv2.imread('​Lenna.png',​ 0)のように記載します。
 +
 +<​code>​
 +# Lenna.pngを、https://​en.wikipedia.org/​wiki/​File:​Lenna.pngからダウンロードしておく
 +
 +import cv2
 +# 画像をグレースケールで読み込み
 +gray = cv2.imread('​Lenna.png',​0)
 +print(gray.shape)
 +</​code>​
 +
 +{{:​pasted:​20171128-224655.png}}
 +
 +
 +==== 画像データがnumpy配列である利点 ====
 +numpy, scipyなどの線形代数関数が、OpenCVでのプログラムでも使用可能\\
 +計算スピードが速い\\
 +scikit-learnやtensorflow,​ Chainerなどの、Pythonの統計的・機械学習ライブラリとの連携もよい
 +
 +==== OpenCVのnumpy画像データの注意点 ====
 +
 +numpyに慣れる必要あり
 +
 +matplotlib, PIL, scikit-imageは、RGB画像で保持するのに対して、
 +OpenCVはBGR画像がデフォルト(matplotlibで描画するときにカラー変換が必要)
 +
 +OpenCVの画像は全て numpy.uint8型のnumpy.array
 +例えば、scikit-imageでは、グレー画像はnumpy.float64型なので、注意。
 +
 +
 +===== OpenCV3でJupyter Notebook上で画像の表示 =====
 +まず、以下のコードをコピペして、Shift + Enterをします。
 +
 +<​code>​
 +# 画像の可視化 with Matplotlib
 +# 簡単だが、各モジュールのカラー画像の保存方法に注意(RGBとBGR)
 +
 +# matplotlibでJupyter Notebook内で画像表示するためのおまじない
 +# Jupyter Notebook内で、%をつけて特定のコマンドを入力する方法を、マジックコマンドという
 +%matplotlib inline
 +
 +import cv2
 +import matplotlib.pyplot as plt
 +
 +img = cv2.imread('​Lenna.png'​)
 +plt.imshow(img)
 +# これだと、色が明らかに変な風に表示されてしまう
 +</​code>​
 +
 +以下のようになりますが、なんか変な色です。
 +
 +{{:​pasted:​20171128-225428.png}}
 +
 +これは、OpenCVの画像はデフォルトだとBGR画像であるため、matplotlib(こちらはRGB画像)で正しく表示するためには色変換が必要。
 +具体的には、cv2.cvtColor()関数を用います。
 +
 +以下のコードを入力して、Shift + Enter.
 +
 +<​code>​
 +%matplotlib inline
 +
 +import cv2
 +import matplotlib.pyplot as plt
 +# OpenCVの画像はデフォルトだとBGR画像であるため、
 +# matplotlib(こちらはRGB画像)で正しく表示するためには色変換が必要
 +# 具体的には、cv2.cvtColor()関数を用いる
 +
 +cvimg = cv2.cvtColor(img,​ cv2.COLOR_BGR2RGB)
 +plt.imshow(cvimg)
 +</​code>​
 +
 +ちゃんと普通の色合いになりました。
 +
 +{{:​pasted:​20171128-225835.png}}
 +
 +===== OpenCV3で画像の保存 =====
 +作成中
 +
 +===== OpenCV3で画像の切り抜き =====
 +
 +以下のコードを入力して、Shift + Enter.
 +
 +<​code>​
 +%matplotlib inline
 +
 +import cv2
 +import matplotlib.pyplot as plt
 +# OpenCVの画像はデフォルトだとBGR画像であるため、
 +# matplotlib(こちらはRGB画像)で正しく表示するためには色変換が必要
 +# 具体的には、cv2.cvtColor()関数を用いる
 +
 +cvimg = cv2.cvtColor(img,​ cv2.COLOR_BGR2RGB)
 +plt.imshow(cvimg)
 +
 +# 新しい配列に入力画像の一部を代入
 +dst = cvimg[0:​400,​ 70:270]
 +plt.imshow(dst)
 +</​code>​
 +
 +以下のように、切り抜かれます。
 +
 +{{:​pasted:​20171128-230751.png}}
 +
 +
 ==== ソースコード(途中) ==== ==== ソースコード(途中) ====
  

opencvで画像切り抜き.1511875700.txt.gz · 最終更新: 2018/10/07 (外部編集)