Pythonライブラリ | OpenCVで画像処理
- 2022.09.16
- Python
画像処理で必須のライブラリ「OpenCV-python」の使い方をまとめます。
目次
インストール
pipを使ってインストールします。
pip install opencv-python
画像の準備
画像処理で有名な画像といえば「マンドリル」や「Lena」でしょうか?研究論文ではよく見ますよね。
以下のサイトから取得できるようです。
OpenCVで扱える拡張子
OpenCVで公式に公開されている拡張子は以下の通りです。
フォーマット | 拡張子 |
---|---|
Windows bitmaps | *.bmp, *.dib (always supported) |
JPEG files | *.jpeg, *.jpg, *.jpe (see the Note section) |
JPEG 2000 files | *.jp2 (see the Note section) |
Portable Network Graphics | *.png (see the Note section) |
WebP | *.webp (see the Note section) |
Portable image format | *.pbm, *.pgm, *.ppm *.pxm, *.pnm (always supported) |
PFM files | *.pfm (see the Note section) |
Sun rasters | *.sr, *.ras (always supported) |
TIFF files | *.tiff, *.tif (see the Note section) |
OpenEXR Image files | *.exr (see the Note section) |
Radiance HDR | *.hdr, *.pic (always supported) |
画像の読み取りと表示
画像の読み取りと表示の簡単なプログラムを記載します。
Lenaが表示されれば成功です。
import cv2
try:
# 1)画像を読み取る / 引数=(表示したい画像のパス)
img = cv2.imread('lena_std.bmp')
if img is None:
raise FileNotFoudError('File Not Found!')
# 2)画像を表示する / 引数=(Window名,表示したい画像)
cv2.imshow('lena_std',img)
# 3)キーイベントの待機 / 引数=0 で何か入力されるまで待つ
cv2.waitKey(0)
# 4)入力されたら、ウィンドウを閉じる
cv2.destroyAllWindows()
# except) Error時
except FileNotFoundError as e:
print(e)
画像の加工
試しに画像を加工してみます。
縮小・拡大(resize)
元の画像のサイズは「512×512」ですが、これを「300×300」とします。
import cv2
try:
# 1)画像を読み取る / 引数=(表示したい画像のパス)
img = cv2.imread('lena_std.bmp')
if img is None:
raise FileNotFoudError('File Not Found!')
# 2)リサイズする
size = (300,300)
resize_img = cv2.resize(img,size)
# 3)画像を表示する / 引数=(Window名,表示したい画像)
cv2.imshow('lena_std',resize_img)
# 4)キーイベントの待機 / 引数=0 で何か入力されるまで待つ
cv2.waitKey(0)
# 5)入力されたら、ウィンドウを閉じる
cv2.destroyAllWindows()
# except) Error時
except FileNotFoundError as e:
print(e)
色の変更(cvtColor)
グレースケール処理を掛けてみます。
import cv2
try:
# 1)画像を読み取る / 引数=(表示したい画像のパス)
img = cv2.imread('lena_std.bmp')
if img is None:
raise FileNotFoudError('File Not Found!')
# 2)グレースケール
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# 3)画像を表示する / 引数=(Window名,表示したい画像)
cv2.imshow('lena_std',gray_img)
# 4)キーイベントの待機 / 引数=0 で何か入力されるまで待つ
cv2.waitKey(0)
# 5)入力されたら、ウィンドウを閉じる
cv2.destroyAllWindows()
# except) Error時
except FileNotFoundError as e:
print(e)
識別
物体を識別する関数も用意されているため検証します。
QRコード識別
QRコードを読み取ることができます。
今回は以下のQRコードを読み取ります。ローカルに「miseruit.png」として保存しました。
import cv2
try:
# 1)画像を読み取る / 引数=(表示したい画像のパス)
img = cv2.imread('miseruit.png')
if img is None:
raise FileNotFoudError('File Not Found!')
# 2)QRCodeDetectorオブジェクトを生成
QRCD = cv2.QRCodeDetector()
# 3)QRコードの読み取り
# data: QRコードの内容
# points: QRコードの座標データ
# b_img: QRコード画像のバイナリデータ
data,points,b_img = QRCD.detectAndDecode(img)
print(data)
# except) Error時
except FileNotFoundError as e:
print(e)
結果は以下の通りです。本サイトのURLが表示されれば成功です。
https://miseruit.com/
以上です!
-
前の記事
Pythonの開発環境整備 | Jupyter Notebookのインストール 2022.09.16
-
次の記事
Pythonライブラリ | OpenCVでカメラから画像/動画を取得する 2022.09.17