Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでOpenCVを使用して特定の色(ここでは青)を検出しますか?


多くの人にとって、画像処理は恐ろしくて骨の折れる作業のように見えるかもしれませんが、多くの人が思っているほど難しくはありません。このチュートリアルでは、Pythonを使用してopenCvで基本的な色検出を行います。

コンピューターで色はどのように機能しますか?

コンピューター上の色は、基本的に色の範囲を数字のタプルとして表す色空間またはカラーモデルで表します。

各色を使用する代わりに、使用する最も一般的な色空間について説明します。 RGB(赤、緑、青)およびHSV(色相、彩度、値)。

RGBは基本的に、色を3つのコンポーネントのタプルとして記述します。各コンポーネントは0〜255の値を取ることができます。ここで、タプル(0、0、0)は黒を表し、(255、255、255)は白を表します。たとえば、画面に純粋な青色のピクセルを表示する場合、R値は0、G値は0、B値は255になります。

以下は、RGBの色の例です。

RGB値
255、0、0
オレンジ 255、128、0
ピンク 255、153、255

HSVでは、ピクセルも3つのパラメーターで表されますが、代わりに色相、彩度、値です。ただし、RGBとは異なり、HSVはピクセルを表すために原色を使用しません。代わりに、ピクセルの色または色合いである色相を使用します。

彩度は色の強度です。0の彩度は0を表し、255の彩度は最大強度です。値は色の明るさまたは暗さを示します。

適切な色の検出

それでは、最初に、使用する画像をダウンロードしましょう。

PythonでOpenCVを使用して特定の色(ここでは青)を検出しますか?

色の画像ができたので、楽しい部分を始めることができます。お気に入りのPythonテキストエディタまたはIDEを開いて、始めましょう。

import cv2
import numpy as np
import imutils
img = cv2.imread('color2.jpg')

上記のコード行では、最初の2行がすべてのインポートを処理します。 3行目では、画像のサイズ変更と色の範囲の検索に役立つimutilsモジュールをインポートしています。 4行目で画像を開きました。

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

これで、画像をhsv画像に変換しました。これは、hsvが強度と色を区別するのに役立つためです。

lower_range = np.array([110,50,50])
upper_range = np.array([130,255,255])

次に、検出する青の上限と下限を定義します。これらの制限を見つけるために、imutilsライブラリのrange-detectorスクリプトを使用できます。これらの値をNumPy配列に入れます。

mask = cv2.inRange(hsv, lower_range, upper_range)

ここでは、実際に指定された青でマスクを作成しています。マスクは単に画像の特定の部分を表します。この場合、hsv画像をチェックし、低域と高域の間にある色をチェックしています。一致する領域は、マスク変数に設定された画像になります。

cv2.imshow('image', img)
cv2.imshow('mask', mask)

while(True):
   k = cv2.waitKey(5) & 0xFF
   if k == 27:
      break

cv2.destroyAllWindows()

最後に、元の画像とマスク画像を並べて表示して、違いを確認できます。コードで0xFFが何を意味するのかを理解したい場合は、これを読んでください。次に、コードはユーザーが「Esc」ボタンを押すのを待ちます。これにより、コードが終了し、すべてのウィンドウが破棄されてクリーンアップされます。

最終プログラム

import cv2
import numpy as np
import imutils

img = cv2.imread('color2.jpg')

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

lower_range = np.array([110,50,50])
upper_range = np.array([130,255,255])

mask = cv2.inRange(hsv, lower_range, upper_range)

cv2.imshow('image', img)
cv2.imshow('mask', mask)

while(True):
   k = cv2.waitKey(5) & 0xFF
   if k == 27:
      break

cv2.destroyAllWindows()

出力

PythonでOpenCVを使用して特定の色(ここでは青)を検出しますか?

上記では、マスクにいくつかの黒い斑点があります。これがノイズです。


  1. PythonでTkinterを使用したカラーゲーム

    GUIアプリケーションの開発では、tkinterは非常に人気があり簡単です。 tkinterを使用すると、GUIゲームを簡単に開発できます。 ここでもカラーゲームの開発を試みています。このゲームでは、プレーヤーは画面に表示される単語の色を入力する必要があるため、スコアが1つ増えます。このゲームをプレイする合計時間は、30秒で、このゲームで使用される色は、赤、青、緑、ピンク、ブラック、イエロー、オレンジ、ホワイト、パープル、ブラウン。インターフェイスには、さまざまな色の名前がさまざまな色で表示されます。ゲームに勝つには、ユーザーは色を識別し、正しい色の名前を入力する必要があります。 サンプルコ

  2. PythonOpenCvを使用してリバースモードでビデオを再生する

    OpenCvの完全な形式はオープンソースのコンピュータービジョンであり、このライブラリを使用して、画像やビデオに対してさまざまな操作を実行できます。 OpenCVのアプリケーション領域 顔認識システム モーショントラッキング 人工ニューラルネットワーク ディープニューラルネットワーク ビデオストリーミングなど Windowsにインストールする場合は、このコマンドラインを使用できます pip install opencv-python Linuxの場合- sudo apt-get install python-opencv タスクを完了するには、いくつかの手順に従う必要