Python を使用してカラー パレットを作成する

Python を使用してカラー パレットを作成する

人間は約1000万色の色を識別できます。それらを認識するには、カラー パレットと呼ばれるものが必要です。カラー パレットには、人間の目に見えるすべての色を表示するためのツールが含まれています。現実の世界では、それらを使用して紙の上に美的なデザインを作成し、デジタルではそれらを使用して画面要素に色を追加します.

最終的に、コンピューターは、特定の形式を使用して、画面に表示されるさまざまな色合いをすべてエンコードします。Python では、OpenCV と NumPy モジュールのおかげで、わずか数行のコードで RGB エンコードされたカラー パレットを開発できます。

OpenCV と NumPy モジュール

OpenCV を使用して画像や動画を解析できます。無料でオープンソースで使いやすく、便利なライブラリが満載です。これらは、オブジェクトを 2 次元と 3 次元の両方で分類、検索、および追跡するための手法を提供します。環境に OpenCV をインストールするには、ターミナルを開いて次を実行します。

pip install opencv-python

NumPy モジュールは、多くの Python プログラムで使用されているもう 1 つの人気のあるライブラリです。NumPy (数値 Python) は、データ分析と科学計算に使用できるモジュールです。n 次元配列オブジェクトと、これらの配列の操作を支援する数学演算を提供します。

環境に NumPy をインストールするには、次を実行します。

pip install numpy

通常、OpenCV を使用して、エッジ検出などの手法を使用して画像を処理します。その後、NumPy を使用して、処理された画像に対してデータ分析を実行できます。この組み合わせを使用して、QR コードの作成とデコード、画像の分類、光学式文字認識の実行、動きを検出してリアルタイムで個人を追跡できるビデオ監視システムを構築できます。

Python を使用してカラー パレットを作成する方法

Python で OpenCV と NumPy モジュールを使用してカラー パレットを作成するには、次の手順に従います。

OpenCV および NumPy モジュールをインポートすることから始めます。pass ステートメントを含むemptyfunction()という名前の関数を定義します。pass ステートメントは、将来記述できるコードのプレースホルダーとして機能します。これは、後で使用する createTrackbar などの関数で特に役立ちます。有効なコールバック関数が必要で、現時点では emptyFunction をプレースホルダーとして渡すことができます。

import cv2
import numpy as np

def emptyFunction():
    pass

NumPy のzero()関数を使用して、サイズが 512 * 512 * 3 でデータ型が uint8 の 3 次元配列を生成します。各配列は、512 列と 512 行で構成されます。uint8は符号なし整数を表すため、プログラムは配列をゼロで埋めます。

image = np.zeros((512, 512, 3), np.uint8)

プログラムが表示するウィンドウの名前を設定し、それをnamedWindow()関数に渡してウィンドウを作成します。

windowName = "OpenCV Color Palette"
cv2.namedWindow(windowName)

次に、赤、緑、青の色成分の 3 つのトラック バーを生成します。これは、OpenCV のcreateTrackbar()関数を使用して行うことができます。まず、ラベルを赤、青、または緑として渡します。次に、これらのバーを配置するウィンドウの名前、windowName を渡す必要があります。

3 番目のパラメータはトラック バーの最小制限で、この場合は 0 です。4 番目のパラメーターは最大値を指定します。これは、24 ビットのカラー値の場合は 255 です。5 番目の最後のパラメーターは、createTrackbar が有効な関数を必要とするコールバック関数です。これが、前に emptyFunction を作成してプレースホルダーとして機能させた理由です。

cv2.createTrackbar('Blue', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Green', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Red', windowName, 0, 255, emptyFunction)

無限 while ループを宣言し、表示したい画像と共にウィンドウ名を OpenCV のimshow()関数に渡します。イメージにはゼロの 3 次元配列が含まれているため、プログラムは最初に黒い画面を表示します。

waitkey()からの値を27 (エスケープ キーの ASCII コード) と比較して、ユーザーがエスケープ キーを押したかどうかを確認します。waitkey() 関数は、指定されたミリ秒数の間、またはキーを押すまで、ウィンドウを表示します。入力として 1 つを渡すことで、ウィンドウを 1 ミリ秒間表示しますが、無限の while ループにより再生成されます。

トラック バーの現在の位置を取得するには、ウィンドウの名前と共にトラック バーの名前をgetTrackbarPos()に渡します。青、緑、赤の 3 つの個別の色コンポーネントについて、この手順を繰り返します。スライス演算子を使用して、3 つの値をイメージ配列に割り当てます。これにより、以前の値のセット (最初はすべてゼロ) が、トラック バーの位置に従って現在の値に置き換えられます。

while (True):
    cv2.imshow(windowName, image)

    if cv2.waitKey(1) == 27:
        break


    blue = cv2.getTrackbarPos('Blue', windowName)
    green = cv2.getTrackbarPos('Green', windowName)
    red = cv2.getTrackbarPos('Red', windowName)
    image[:] = [blue, green, red]
    print(blue, green, red)

ユーザーが Escape キーを押したら、destroyAllWindows()を使用して、プログラムが開いたウィンドウを閉じます。

cv2.destroyAllWindows()

最後に、すべてをまとめて実行し、カラー パレットを制御および表示します。

Python Color Palette プログラムの出力

上記のプログラムを実行すると、青、緑、赤の 3 つのトラック バーを含むウィンドウが表示されます。トラック バーは 0 から 255 の範囲で移動します。さまざまなバーの値を変えると、下のセクションにさまざまな色合いが表示されます。

この最初の例では、青のバーが 0、緑が 69、赤が 255 に設定されていることがわかります。結果の出力色はオレンジ/赤の色合いです。さらに、端末ウィンドウには色の値が 0 69 255 として表示されます。

オレンジレッドのカラーパレット

同様に、青のバーを 130、緑を 0、赤を 75 に設定すると、藍色になります。

インディゴのカラーパレット

OpenCV のさまざまなアプリケーション

OpenCV は、画像処理、物体認識、顔認識、追跡などのタスクに役立つ機能を提供します。OpenCV を使用すると、ロボット工学、産業オートメーション、医療画像処理、監視システムなどの分野で恩恵を受けるリアルタイムのコンピューター ビジョン アプリケーションを作成できます。

コンピュータビジョンの未来は有望です。コンピューター ビジョンを使用して視覚障害者を支援し、農業の成長を促進し、自動運転車を使用して交通安全を強化し、火星などの他の惑星をナビゲートすることもできます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です