LoginSignup
11
16

More than 3 years have passed since last update.

OpenCVの勉強①(インストール、画像処理)

Last updated at Posted at 2019-04-05

OpenCVのインストール

Anacondaには、定番のライブラリがパッケージされていますが、OpenCVは入っていないので自分でインストールする必要があります。
ライブラリをインストールするのは、以下のコマンドを入力します。

pip install "ライブラリ名"

Anaconda PromptでOpenCVをインストールしてみましょう。

$ pip install opencv-python

Collecting opencv-python
  Downloading https://files.pythonhosted.org/packages/a3/50/04d0669afe884f137c2f490642756e8c4a658254300a9eaf253d1e643085/opencv_python-4.1.0.25-cp37-cp37m-win_amd64.whl (37.3MB)
    100% |████████████████████████████████| 37.4MB 617kB/s
Requirement already satisfied: numpy>=1.14.5 in c:\anaconda3\lib\site-packages (from opencv-python) (1.16.2)
Installing collected packages: opencv-python
Successfully installed opencv-python-4.1.0.25

「Successfully installed opencv-python」と表示されたらインストール成功です。
念のためインストールされているかどうか確認しましょう。
インストール済みのライブラリを一覧を確認するコマンドは以下の通りです。

pip freeze

ついでに、「numpy」、「matplotlib」も一覧にあるかどうか確認し、インストールされていない場合は、インストールしておきましょう(今後しょっちゅう使います)

  • Numpyは配列を作成するためのライブラリで、画像データの表現に利用します。
  • matplotlibはグラフ表示をするためのライブラリで、ヒストグラムの表示で利用します。

続いて、pythonインタプリタで「cv2」をインポートしてバージョンを確認してみます。

>>> import cv2
>>> print(cv2.__version__)
4.1.0 #←OpenCVのバージョン

画像の表示

OpenCVで下の画像(hisyo.jpg)を表示します。
画像はPythonファイルと同じディレクトリに保存します。

hisyo.jpg

img_show.py
#cv2をインポート
import cv2

#"hisyo.jpg"を変数"filename"に代入
filename = "hisyo.jpg"
#ファイルから画像データを読み込む関数
img = cv2.imread(filename)
#画像をウィンドウに表示する関数
cv2.imshow("image", img)
#キーイベントを待つ関数。0の場合はキーが押されるまで待つ)
cv2.waitKey(0)

これで「image」というウィンドウ名で画像ファイルが表示されます。

画像の属性情報

OpenCVで画像の属性情報を表示します。

img_property.py
import cv2

filename = "hisyo.jpg"
img = cv2.imread(filename)

print(img.shape)
# (1136, 1600, 3)  ←(縦pixel size, 横のpixel size, 色の深さ=RBG=3色)

print(type(img))
# <class 'numpy.ndarray'>  ←NumPyの配列(ndarray)で配列されている

print(img.dtype)
# uint8  ←8ビットの符号なし整数

ヒストグラムの表示

matplotlib.pyplotを使ってヒストグラムを表示します。

histogram_mono.py
import cv2
#matplotlib.pyplotをインポート。名前が長いので以下pltと呼ぶ。
import matplotlib.pyplot as plt

img = cv2.imread('hisyo.jpg')

#Matplotlibはヒストグラムを描画する関数
plt.hist(img.ravel(),256,[0,256]); plt.show()

histgram_mono.png

histogram_color.py
import cv2
import matplotlib.pyplot as plt

img = cv2.imread('hisyo.jpg')

color = ('b','g','r')
for i,col in enumerate(color):
    histr = cv2.calcHist([img],[i],None,[256],[0,256])
    plt.plot(histr,color = col)
    plt.xlim([0,256])
plt.show()

histogram.png

ネガポジ変換

取り込んだ画像をネガポジ変換してみる。

nega.py
import cv2

filename = "hisyo.jpg"
img = cv2.imread(filename)

# ネガポジ変換
nega = 256 - img  #8ビットカラー(256色)をひっくり返すイメージ
# ファイルに保存する関数
cv2.imwrite("nega.jpg", nega)

nega.jpg

グレースケール(モノクロ)変換

グレースケール(モノクロ)に変換してみる。

mono.py
import cv2

filename = "hisyo.jpg"
img = cv2.imread(filename)

# モノクロに変換する関数
mono = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# ファイルに保存する関数
cv2.imwrite("mono.jpg", mono)

mono.jpg

以上、OpenCVを使った画像処理の基本でした。

11
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
16