ホームページ >バックエンド開発 >C++ >HSV 色空間を使用して OpenCV で赤色の検出を改善するにはどうすればよいですか?

HSV 色空間を使用して OpenCV で赤色の検出を改善するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-16 08:43:02885ブラウズ

How can I improve red color detection in OpenCV using HSV color space?

OpenCV を使用した赤色検出の強化

はじめに

OpenCV と HSV カラーを使用した赤色の検出を扱う場合スペースが限られていると、満足のいく結果を得るのが難しい場合があります。ただし、さまざまなアプローチとパラメーター調整を検討することで、大幅な改善が可能です。

問題

画像内の赤い四角形の検出を強化するには、次のコードを使用します。

#include <opencv2/opencv.hpp>

int main()
{
    // Image initialization
    Mat input = imread("path_to_image");

    // HSV conversion
    Mat imageHSV;
    cvtColor(input, imageHSV, COLOR_BGR2HSV);

    // HSV parameter ranges
    int H_MIN = 0;
    int H_MAX = 10;
    int S_MIN = 70;
    int S_MAX = 255;
    int V_MIN = 50;
    int V_MAX = 255;

    // Red color range in HSV
    cv::inRange(imageHSV, cv::Scalar(H_MIN, S_MIN, V_MIN),
                cv::Scalar(H_MAX, S_MAX, V_MAX), imgThreshold0);
}

ダイナミック トラックバーを使用して HSV 値を調整したにもかかわらず、最適な結果は依然として得られません。

解決策

1 。色相値範囲の拡張:

HSV 空間では、赤の色は 180 を囲みます。したがって、赤の範囲全体を完全に捉えるには、色相値 (H) は両方の [0,10] を考慮する必要があります。および [170, 180]。

inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1);
inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2);

2.画像の反転とシアンの検出:

または、興味深いアプローチは次のとおりです:

  • 元の BGR 画像を反転します。
  • 反転した画像を HSV に変換します。 .
  • 赤の代わりにシアン色 (HSV 90 付近) を検出します。

このメソッドは、HSV の単一範囲のみで赤の補色 (シアン) を効果的に検出します。

// Invert original image
Mat3b bgr_inv = ~bgr;

// Convert to HSV
Mat3b hsv_inv;
cvtColor(bgr_inv, hsv_inv, COLOR_BGR2HSV);

// Detect cyan range
inRange(hsv_inv, Scalar(90 - 10, 70, 50), Scalar(90 + 10, 255, 255), mask);

結論

これらの強化された技術を組み込むことにより、OpenCV はより高い精度で効果的に赤色を検出できます。これらのアプローチは、さまざまな画像処理シナリオでのさらなる最適化とアプリケーションのための強固な基盤を提供します。

以上がHSV 色空間を使用して OpenCV で赤色の検出を改善するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。