OpenCV cvtColor
この記事の目的は、cvtColor()
メソッドの機能と、このメソッドを使用して OpenCV で rgb
イメージを hsv
イメージに変換する方法を学ぶことです。また、hsv
イメージが役立つ場所と、それを使用する必要がある理由についても説明します。
OpenCV で cvtColor()
メソッドを使用して HSV イメージを作成する
ここでは、RGB
と HSV
の画像の違いを示す画像を 1つ追加しました。RGB
カラーの画像を検討するときはいつでも、各ピクセルには赤、緑、青の色を表す 3つの値があります。
同様に、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
形式で配置しています。
右側には、色相飽和値の画像が表示されています。この部分では、特定の色の範囲にさまざまな色合いが含まれています。
この画像を HSV
形式に変換する必要がある理由と、BGR
画像を HSV
形式に変換する利点について説明しましょう。
各領域は他の色合いで表されるため、コンピュータビジョンや機械学習プロジェクトで役立ちます。特定の色でマークされたオブジェクトだけに関心がある場合は、残りの色領域を無視して、色領域の特定の部分を抽出できます。
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn