HOWTO · Python

OpenCV cvtColor

この記事の目的は、cvtColor()メソッドの機能と、このメソッドを使用して rgb イメージを hsv イメージに変換する方法を学習することです。また、hsv イメージがどこで役立つのか、なぜそれを使用する必要があるのか​​ についても説明します。

このページの内容

この記事の目的は、cvtColor() メソッドの機能と、このメソッドを使用して OpenCV で rgb イメージを hsv イメージに変換する方法を学ぶことです。また、hsv イメージが役立つ場所と、それを使用する必要がある理由についても説明します。

OpenCV で cvtColor() メソッドを使用して HSV イメージを作成する

ここでは、RGB と HSV の画像の違いを示す画像を 1つ追加しました。RGB カラーの画像を検討するときはいつでも、各ピクセルには赤、緑、青の色を表す 3つの値があります。

RGB および HSV イメージ

同様に、HSV カラーモデル画像では、各ピクセルは色相、彩度、値の 3つの値で表されます。色相は角度を表し、彩度は色の彩度を表し、値は色の強度を表します。

したがって、このように、HSV カラーモデルが機能します。RGB 画像を HSV 画像に変換すると、各ピクセル値が色相の彩度と値の形式に変換されます。このカラーモデルを HSV と呼びます。

この RGB カラーモデルを HSV カラーモデル画像に変換する方法を見てみましょう。

まず、パッケージ opencv と numpy をインポートします。次の行では、VideoCapture() を使用してカメラにアクセスし、ゼロを渡そうとしているため、このシステムのプライマリカメラにアクセスします。。

取得するビデオフィードが何であれ、それらを V オブジェクトに保存します。

import numpy as np
import cv2

V = cv2.VideoCapture(0)

カメラからビデオをキャプチャしたら、そのビデオ内の各フレームを繰り返します。次に、ビデオキャプチャから各フレームを読み取る必要があります。このフレームは、numpy 配列の形式であるビデオからの 1つの画像に他なりません。

RET, F = V.read()
cv2.imshow("BGR Frame", F)

これは元のフレームであり、cvtColor() メソッドを使用してフレームを HSV に変換します。この方法は、さまざまなカラーモデルをユーザーに提供します。その中で、最も一般的な方法は COLOR_BGR2HSV です。

cvtColor() で 2つのパラメータを渡す必要があります。1つは元の画像で、もう 1つはこの画像またはフレームに対してどのような変換を行うかです。COLOR_BGR2HSV メソッドをパラメーターとして渡しました。これは、cvtColor() にこの画像の色を BGR から HSV に変換するように指示していることを意味します。

import numpy as np
import cv2

V = cv2.VideoCapture(0)

while True:
    RET, F = V.read()
    cv2.imshow("BGR Frame", F)
    HSV = cv2.cvtColor(F, cv2.COLOR_BGR2HSV)
    cv2.imshow("HSV Frame", HSV)
    if cv2.waitKey(1) == ord("q"):
        break
V.release()
cv2.destroyAllWindows()

プログラムが実行されていることがわかります。左側には、カメラからアクセスしている元のコンテンツを BGR 形式で配置しています。

右側には、色相飽和値の画像が表示されています。この部分では、特定の色の範囲にさまざまな色合いが含まれています。

cvtColor メソッドを使用して OpenCV で HSV イメージを作成します

この画像を HSV 形式に変換する必要がある理由と、BGR 画像を HSV 形式に変換する利点について説明しましょう。

各領域は他の色合いで表されるため、コンピュータビジョンや機械学習プロジェクトで役立ちます。特定の色でマークされたオブジェクトだけに関心がある場合は、残りの色領域を無視して、色領域の特定の部分を抽出できます。