OpenCVを使ってPythonで画像加工
OpenCV(Open Source Computer Vision Library)はインテルが開発したオープンソースのコンピュータ向け画像ライブラリです.
目次
opencv-python
PythonでOpenCVを扱うにはopencv-pythonを使います.
次の環境での例です.
- macOS 11.2
- python 3.8
- opencv-python 4.5.1
インストールと使用
インストールは
pip3 install opencv-python |
で行えます.
ライブラリのインポートは
import cv2 |
です.
画像ファイルの読み書き
画像ファイルの読み込みは,
img = cv2.imread('入力ファイル名') |
です.
img
に画像が読み込まれているとすれば,
cv2.imwrite('出力ファイル名', img) |
で書き出すことができます.
画像サイズの取得
画像サイズはshape
に格納されています.
img.shape[0:2] |
色の変換
色の変換にはcvtColor
メソッドを使います.
例えば,グレースケールへの変換にはCOLOR_BGR2GRAY
を指定し,
cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) |
とします.
RGBをBGRにするにはCOLOR_RGB2BGR
です.
画像の合成
次の形で画像を合成します.
cv2.addWeighted(file1, alpha, file2, beta, gamma) |
file1
をalpha
倍,file2
をbeta
倍して,スカラー値でgamma
を加えた合成になります.
画像の結合
5画像連結する例
import cv2 |
回転
rotate
メソッドでパラメータを設定します.
ROTATE_90_CLOCKWISE
ROTATE_90_COUNTERCLOCKWISE
ROTATE_180
例えば,時計回りに90度回転させるには,
img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) |
です.
デジタル検版
スクリプト
スクリプトではsrc.jpg
とtar.jpg
の2枚のjpg画像を読み込み,差分を検出してdiff.jpg
を出力しています.
この例では過剰反応を防ぐために,cv2.threshold
の引数で差分ありとみなすための閾値をthresh=0
[より大きい]ではなくthresh=2
としました.
import cv2 |
使用例
スクリプトを適用し,2枚の画像から差分を検出した例です.
画像はいらすとや様からお借りしました.
この2枚を比較すると,差分が赤色で表示されます.