OpenCV cvtColor

Salman Mehmood 2024年2月15日
OpenCV cvtColor

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

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

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

RGB および HSV イメージ

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

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

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

まず、パッケージ opencvnumpy をインポートします。次の行では、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 形式に変換する利点について説明しましょう。

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

著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

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

関連記事 - Python OpenCV