Pythonで画像ファイルを読み込み白色以外を検出してメッセージを出力させる方法

**今回は、Pythonでopencvライブラリをつかって画像ファイルを読み込み、白色以外を検出して判別メッセージを出力させてみます。**

:::note info 
**白色以外を検出してメッセージを出力するには、**

- **1.cv2.inRange()関数を使用して白色の範囲に収まらない画素を抽出します。**
- **2.np.count_nonzero()関数を使用して、抽出された画素の数を数え、それが0でなければメッセージを出力します。**
- **3.検出結果で白以外の色が検出されたら"画像の中に白以外のものがあります"と結果を出し、検出されなければ"画像は真っ白です"と表示されます。**
- **4.OpenCVライブラリはpipをつかって事前にインストールしておきます。**
```
> pip install opencv-contrib-python
```
:::

では実際にやっていきます。

## 1. 画像イメージの作成
**①白以外の色を含む画像**
ペイントで日本の国旗を作成してflag.pngとファイルに保存しておきます。
- **ファイル名：flag.png**
![flag.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2075298/d67c13f2-aa0e-2411-b15b-ba6cd92c3eb7.png)


## 2. Pythonコード
次のpythonコードを用意しました。
- **ファイル名：colorcheck.py**
```Python: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("画像は真っ白です")
```

:::note info 
この例では、白色の範囲が BGR の [0, 0, 200]から[180, 30, 255]に指定されています。白色の範囲は、画像や撮影条件によって異なる場合があるため、適切な範囲を指定する必要があります。
:::

## 3. 実行する
```
> python3 colorcheck.py

画像の中に白以外のものがあります

```
実行後、画像の中に白以外のものがありますとメッセージが出力された。
以上になります。
この情報が皆様の何らかのお役に立てることができますように。

<table border="0" cellpadding="0" cellspacing="0"><tr><td><div style="border:1px solid #95a5a6;border-radius:.75rem;background-color:#FFFFFF;width:504px;margin:0px;padding:5px;text-align:center;overflow:hidden;"><table><tr><td style="width:240px"><a href="https://hb.afl.rakuten.co.jp/ichiba/14f168ca.485dc5c9.14f168cb.b3e40f57/_RTLink71449?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2Fae770ef9c5aa402d410516fc252474c8%2F&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjAsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjoxLCJhbXAiOmZhbHNlfQ%3D%3D" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><img src="https://hbb.afl.rakuten.co.jp/hgb/14fd8852.00a017ee.14fd8853.823bacf4/?me_id=1213310&item_id=20185382&pc=https%3A%2F%2Fthumbnail.image.rakuten.co.jp%2F%400_mall%2Fbook%2Fcabinet%2F3669%2F9784798063669.jpg%3F_ex%3D240x240&s=240x240&t=picttext" border="0" style="margin:2px" alt="" title=""></a></td><td style="vertical-align:top;width:248px;"><p style="font-size:12px;line-height:1.4em;text-align:left;margin:0px;padding:2px 6px;word-wrap:break-word"><a href="https://hb.afl.rakuten.co.jp/ichiba/14f168ca.485dc5c9.14f168cb.b3e40f57/_RTLink71449?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2Fae770ef9c5aa402d410516fc252474c8%2F&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjAsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjoxLCJhbXAiOmZhbHNlfQ%3D%3D" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  >Pythonプログラミング逆引き大全 400の極意 [ 金城俊哉 ]</a></p><div style="margin:10px;"><a href="https://hb.afl.rakuten.co.jp/ichiba/14f168ca.485dc5c9.14f168cb.b3e40f57/_RTLink71449?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2Fae770ef9c5aa402d410516fc252474c8%2F&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjAsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjoxLCJhbXAiOmZhbHNlfQ%3D%3D" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><img src="https://static.affiliate.rakuten.co.jp/makelink/rl.svg" style="float:left;max-height:27px;width:auto;margin-top:0"></a><a href="https://hb.afl.rakuten.co.jp/ichiba/14f168ca.485dc5c9.14f168cb.b3e40f57/_RTLink71449?pc=https%3A%2F%2Fproduct.rakuten.co.jp%2Fproduct%2F-%2Fae770ef9c5aa402d410516fc252474c8%2F%3Fscid%3Daf_pc_bbtn&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIyNDB4MjQwIiwibmFtIjoxLCJuYW1wIjoicmlnaHQiLCJjb20iOjEsImNvbXAiOiJkb3duIiwicHJpY2UiOjAsImJvciI6MSwiY29sIjoxLCJiYnRuIjoxLCJwcm9kIjoxLCJhbXAiOmZhbHNlfQ==" target="_blank" rel="nofollow sponsored noopener" style="word-wrap:break-word;"  ><div style="float:right;width:41%;height:27px;background-color:#bf0000;color:#fff!important;font-size:12px;font-weight:500;line-height:27px;margin-left:1px;padding: 0 12px;border-radius:16px;cursor:pointer;text-align:center;">楽天で購入</div></a></div></td></tr></table></div><br><p style="color:#000000;font-size:12px;line-height:1.4em;margin:5px;word-wrap:break-word"></p></td></tr></table>