今回は、Pythonでopencvライブラリをつかって画像ファイルを読み込み、白色以外を検出して判別メッセージを出力させてみます。
白色以外を検出してメッセージを出力するには、
- 1.cv2.inRange()関数を使用して白色の範囲に収まらない画素を抽出します。
- 2.np.count_nonzero()関数を使用して、抽出された画素の数を数え、それが0でなければメッセージを出力します。
- 3.検出結果で白以外の色が検出されたら"画像の中に白以外のものがあります"と結果を出し、検出されなければ"画像は真っ白です"と表示されます。
- 4.OpenCVライブラリはpipをつかって事前にインストールしておきます。
> pip install opencv-contrib-python
では実際にやっていきます。
1. 画像イメージの作成
①白以外の色を含む画像
ペイントで日本の国旗を作成してflag.pngとファイルに保存しておきます。
2. Pythonコード
次のpythonコードを用意しました。
- ファイル名:colorcheck.py
colorcheck.py
import cv2
import numpy as np
# 画像の読み込み
img = cv2.imread("flag.png")
# 白色の範囲を指定
lower_white = np.array([0, 0, 200])
upper_white = np.array([180, 30, 255])
# 白色の範囲に収まらない画素を抽出
non_white_mask = cv2.inRange(img, lower_white, upper_white)
# 抽出された画素の数を数える
non_white_pixels = np.count_nonzero(non_white_mask)
# 白色以外の画素があればメッセージを出力
if non_white_pixels > 0:
print("画像の中に白以外のものがあります")
else:
print("画像は真っ白です")
この例では、白色の範囲が BGR の [0, 0, 200]から[180, 30, 255]に指定されています。白色の範囲は、画像や撮影条件によって異なる場合があるため、適切な範囲を指定する必要があります。
3. 実行する
> python3 colorcheck.py
画像の中に白以外のものがあります
実行後、画像の中に白以外のものがありますとメッセージが出力された。
以上になります。
この情報が皆様の何らかのお役に立てることができますように。
|