PythonでColorDetectを使用し対象の画像やビデオの色を検出する

PythonでColorDetectを使用し対象の画像やビデオの色を検出してみます。

ColorDetectモジュール・ライブラリは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■ColorDetectをインストールする

ColorDetectをインストールを行いますが、今回はpipを経由してインストールを行うので、まずWindowsのコマンドプロンプトを起動します。

pip install ColorDetect

起動後、上記のコマンドを入力し、Enterキーを押します。

なお、今回は、pythonランチャーを使用しており、Python Version 3.8.5にインストールを行うために、pipを使う場合にはコマンドでの切り替えを行います。

py -3.8 -m pip install ColorDetect

切り替えるために、上記のコマンドを入力し、Enterキーを押します。

Defaulting to user installation because normal site-packages is not writeable
Collecting ColorDetect
Downloading ColorDetect-1.4.3-py3-none-any.whl (12 kB)
Collecting matplotlib>==3.2.1
Downloading matplotlib-3.4.2-cp38-cp38-win_amd64.whl (7.1 MB)
|████████████████████████████████| 7.1 MB 3.3 MB/s
Requirement already satisfied: opencv-python>==4.2.0.32 in c:\users\user_\appdata\roaming\python\python38\site-packages (from ColorDetect) (4.5.2.54)
Collecting scikit-learn>==0.22.2.post1
Downloading scikit_learn-0.24.2-cp38-cp38-win_amd64.whl (6.9 MB)
|████████████████████████████████| 6.9 MB 6.4 MB/s
Collecting webcolors>==1.11.1
Downloading webcolors-1.11.1-py3-none-any.whl (9.9 kB)
Requirement already satisfied: numpy>==1.18.1 in c:\users\user_\appdata\roaming\python\python38\site-packages (from ColorDetect) (1.20.3)
Requirement already satisfied: python-dateutil>=2.7 in c:\users\user_\appdata\roaming\python\python38\site-packages (from matplotlib>==3.2.1->ColorDetect) (2.8.1)
Collecting kiwisolver>=1.0.1
Downloading kiwisolver-1.3.1-cp38-cp38-win_amd64.whl (51 kB)
|████████████████████████████████| 51 kB 3.8 MB/s
Collecting cycler>=0.10
Downloading cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
Requirement already satisfied: pillow>=6.2.0 in c:\users\user_\appdata\roaming\python\python38\site-packages (from matplotlib>==3.2.1->ColorDetect) (8.2.0)
Requirement already satisfied: pyparsing>=2.2.1 in c:\users\user_\appdata\roaming\python\python38\site-packages (from matplotlib>==3.2.1->ColorDetect) (2.4.7)
Collecting threadpoolctl>=2.0.0
Downloading threadpoolctl-2.1.0-py3-none-any.whl (12 kB)
Collecting scipy>=0.19.1
Downloading scipy-1.7.0-cp38-cp38-win_amd64.whl (33.7 MB)
|████████████████████████████████| 33.7 MB 6.8 MB/s
Collecting joblib>=0.11
Downloading joblib-1.0.1-py3-none-any.whl (303 kB)
|████████████████████████████████| 303 kB 6.4 MB/s
Requirement already satisfied: six>=1.5 in c:\users\user_\appdata\roaming\python\python38\site-packages (from python-dateutil>=2.7->matplotlib>==3.2.1->ColorDetect) (1.16.0)
Installing collected packages: kiwisolver, cycler, matplotlib, threadpoolctl, scipy, joblib, scikit-learn, webcolors, ColorDetect
Successfully installed ColorDetect-1.4.3 cycler-0.10.0 joblib-1.0.1 kiwisolver-1.3.1 matplotlib-3.4.2 scikit-learn-0.24.2 scipy-1.7.0 threadpoolctl-2.1.0 webcolors-1.11.1

Enterキーを押すと、インストールが開始され、上記のように「Successfully installed」と表示されます。これが表示されれば、ColorDetectが正常にインストールされたことになります。

なお、今回はColorDetectのバージョン1.4.3をインストールしました。

■色を検出するために画像ファイルを用意する

インストール後、色を検出するために今回は画像ファイルを用意します。

今回用意したのは、著作権フリーの花(バラ)の画像です。(https://pixabay.com/よりダウンロード)。

この画像が置かれている場所は「C:\Users\user_\test(フォルダパス)」です。

■ColorDetectを使用し対象の画像やビデオの色を検出する

画像ファイルが用意できましたので、ColorDetectを使用し対象の画像やビデオの色を検出するスクリプトを書いていきます。

■コード

from colordetect import ColorDetect

image = ColorDetect(r'C:\Users\user_\test\test.jpg')

colors = image.get_color_count()

print(colors)

インポートでColorDetectを呼び出します。その後にimageという変数を作成し、その中でColorDetect()関数を使用します。ColorDetect()関数の括弧内には、引数,パラメーターとして色を検出する画像ファイル、もしくは動画ファイルを渡します。渡した後、image変数に格納。

格納後、colorsという変数を作成し、その中でget_color_count()関数を使用します。これで、画像ファイル、もしくは動画ファイル内の色を認識し、辞書(色の数・種類)を返します。

返された情報をprint()関数で出力します。

■実行

このスクリプトを「color_target_image.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、今回指定した画像ファイル内で最も豊富な色を分類して出力させることができまいた。この結果から検出された色は「{‘firebrick(ファイヤーブリック)’: 7.72%, ‘crimson(クリムゾン)’: 8.18%, ‘maroon(マルーン)’: 10.42%, ‘black(黒)’: 63.99%}」となります。

■rgb形式で出力する

■コード

from colordetect import ColorDetect

image = ColorDetect(r'C:\Users\user_\test\test.jpg')

colors = image.get_color_count(color_format="rgb")

print(colors)

検出された色をrgb形式で出力する場合は、get_color_count()関数を使用する際に、引数,パラメーターとして「color_format=”rgb”」を渡します。これでrgb形式で出力することができます。

■16進数(hex)形式で出力する

■コード

from colordetect import ColorDetect

image = ColorDetect(r'C:\Users\user_\test\test.jpg')

colors = image.get_color_count(color_format="hex")

print(colors)

検出された色を16進数(hex)形式で出力する場合は、get_color_count()関数を使用する際に、引数,パラメーターとして「color_format=”hex”」を渡します。これでrgb形式で出力することができます。

■画像や動画内で多くの色を調べる

■コード

from colordetect import ColorDetect

image = ColorDetect(r'C:\Users\user_\test\test.jpg')

colors = image.get_color_count(color_count=**)

print(colors)

画像や動画内で多くの色を調べる場合は、get_color_count()関数を使用する際に、引数,パラメーターとして「color_count=**」を渡します。「**」は、画像から取得する最も優勢な色の数を指定します。これでrgb形式で出力することができます。

コメント

タイトルとURLをコピーしました