Python+OpenCVを用いて画像ファイルの読み書き、表示、色変換、部分処理をする方法をソースコード付きで解説します。
画像の読み込み(cv2.imread)
Python版のOpenCVでは、cv2.imreadメソッドで画像を読み込むことができます。
img = cv2.imread(filename[,flag])
パラメータ | 説明 |
---|---|
filename | 読み込む画像のファイルパス |
flag | cv2.IMREAD_COLOR : RGBカラー画像として読み込む(画像の透明度は無視)。デフォルト値。単に1と指定しても同じ。 cv2.IMREAD_GRAYSCALE : グレースケール画像として読み込む。単に0と指定しても同じ。 cv2.IMREAD_UNCHANGED :透明度(アルファチャンネル)も含めたRGBA画像として読み込む。単に-1と指定しても同じ。 |
img | NumPy配列(読み込んだ画像の画素値を格納) |
読み込みに対応している画像ファイル形式は、「jpg」「png」「bmp」「pgm」「pbm」「ppn」「dib」「jp2」「tiff」「tf」「ras」「sr」です。
読み込んだ画像の画素値はNumPy配列に格納されます。
そのため、通常のNumPy配列と同様に、print関数で中身を確認できます。
動画解説版
本ページの内容は以下動画でも解説しています。
サンプルコード
サンプルプログラムのソースコードです。
■入力画像(3×3)
rgbとrgbaは3次元配列、grayは2次元配列になります。
それぞれの各要素は各画素の画素値を表しています。
種類 | 説明 |
---|---|
rgb | 最初の要素[ 36 28 237]は、座標(0,0)の画素値です。Windowsの場合、36はBlue、28はGreen、237はRedの濃度です。[ 76 177 34]は、座標(1, 0)の画素値です。 |
gray | 最初の要素91は座標(0,0)の画素値です。122は、座標(1, 0)の画素値です。 |
rgba | 最初の要素[36 28 237 255]は座標(0,0)の画素値です。Windowsの場合、36はBlue、28はGreen、237はRedの濃度、255は透明度です。[ 76 177 34 255]は、座標(1, 0)の画素値です。 |
以下のようなエラーが表示された場合、指定した画像ファイルが見つからなかったため空の配列を処理しようとしてエラーを出しています。
この場合、「cv2.imread(“C:/Users/Downloads/input.jpg”)」という風に絶対パスで画像ファイルのパスを指定してみてください。
cv2.error: OpenCV(4.5.3) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-sn_xpupm\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
関連ページ
Python版OpenCVの様々な使い方については以下ページでまとめています。
【Python版OpenCV超入門】使い方とサンプルコードを解説
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。
コメント