Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで画像を読み込む方法:OpenCVとPILを使った基本操作を解説

OpenCVによる画像処理

OpenCV(Open Source Computer Vision)は、機械学習とコンピュータビジョンのために開発されたオープンソースのプログラミングライブラリです。コンピュータビジョンアプリケーション開発のための共通基盤を提供し、商用製品への機械学習の導入を迅速化します。

OpenCVには、2,500以上の最適化されたアルゴリズムが含まれており、古典的な手法から最先端の手法まで、コンピュータビジョンと機械学習の両分野をカバーしています。これらの豊富なアルゴリズムにより、顔検出・認識、物体识别、動画内の人間の動作の分類、カメラの動きの追跡、複数画像の結合による高解像度シーンの生成など、多様な用途に活用できます。

本記事では、OpenCVライブラリとPythonを使って画像を読み込み、表示する方法を解説します。実装にはcv2モジュールとNumpyモジュールを使用します。

NumpyモジュールはPython Package Index(PyPI)からダウンロードできます。

$ pip install numpy

画像の読み込み

画像の読み込みにはcv2.imread()関数を使用します。画像ファイルはカレントワーキングディレクトリに配置するか、絶対パスで指定する必要があります。

import numpy as np
import cv2

# カラー画像をグレースケールで読み込む
img = cv2.imread('Top-bike-wallpaper.jpg', 0)

画像の表示

ウィンドウ上に画像を表示するには、cv2.imshow()関数を使用します。

# 画像を表示
cv2.imshow('image', img)

# キー入力待機
cv2.waitKey(0)

# 作成したすべてのウィンドウを破棄
cv2.destroyAllWindows()

上記のコードを実行すると、ウィンドウには次のように画像が表示されます。

Pythonで画像を読み込む方法:OpenCVとPILを使った基本操作を解説

画像の保存

画像を保存するにはcv2.imwrite()関数を使用します。第1引数にはファイル名、第2引数には保存したい画像を指定します。

cv2.imwrite('messigray.png', img)

コード全体のまとめ

import numpy as np
import cv2

# 画像の読み込み(カラー画像をグレースケールでロード)
img = cv2.imread('Top-bike-wallpaper.jpg', 0)

# 画像の表示
cv2.imshow('image', img)

# キー入力待機
k = cv2.waitKey(0)

# ESCキーで終了
if k == 27:
    cv2.destroyAllWindows()
# 's'キーで保存して終了
elif k == ord('s'):
    cv2.imwrite('myBike.jpg', img)
    cv2.destroyAllWindows()

「s」キーを押すと画像が保存され、「ESC」キーを押すと保存せずにそのまま終了します。

PIL(Python Imaging Library)を使う方法

Python Imaging Library(PIL)は、Python用の画像処理ライブラリです。pipを使ってインストールしましょう。

$ pip install Pillow

インストール後、ImageとImageFilterモジュールをインポートします。

from PIL import Image, ImageFilter

# 画像を読み込む
im = Image.open('myBike.png')

# 画像を表示する
im.show()

# 画像にフィルタ(シャープ化)を適用
im_sharp = im.filter(ImageFilter.SHARPEN)

# フィルタ適用後の画像を新しいファイルに保存
im_sharp.save('another_Bike.jpg', 'JPEG')

実行結果

Pythonで画像を読み込む方法:OpenCVとPILを使った基本操作を解説

画像はデフォルトの場所、つまりカレントワーキングディレクトリに保存され、表示されたウィンドウには処理後の画像が確認できます。

OpenCVとPIL、どちらもPythonでの画像処理に欠かせないライブラリです。用途に応じて使い分けることで、効率的な画像処理プログラムを構築できるでしょう。

  1. Python・OpenCVでヒストグラム平坦化を実装する方法|cv2.equalizeHist()の使い方

    ヒストグラム平坦化(Histogram Equalization)とは ヒストグラム平坦化は、画像処理において画像のヒストグラムを利用してコントラストを調整する手法です。 この手法は、多くの画像の全体的なコントラストを向上させる効果があります。特に、画像内の有効なデータが近いコントラスト値で表現されている場合に威力を発揮します。この調整を行うことで、輝度値がヒストグラム上により均等に分布するようになり、局所的にコントラストが低い領域でも高いコントラストを得られるようになります。 OpenCVの cv2.equalizeHist() 関数 OpenCVには、この処理を実行するための関数 cv2

  2. 【Python×OpenCV】画像の収縮(エロージョン)と膨張(ダイレーション)の基本を解説

    本記事では、PythonのOpenCVモジュールを使って、エロージョン(収縮)やダイレーション(膨張)といったモルフォロジー演算(形態学的処理)を実行する方法を解説します。 OpenCVはコンピュータビジョン向けに設計されたオープンソースのライブラリで、もともとはIntelによって開発されました。BSDライセンスのもとで誰でも無料で利用できます。 OpenCVの機能を使うには、まずpipでインストールしておきましょう。 sudo pip3 install opencv-python エロージョン(収縮)とは?仕組みを解説 エロージョンは、前景オブジェクトの境界を削り取っていく処理です。画像内の