はじめに
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.画像の反転とシアンの検出:
または、興味深いアプローチは次のとおりです:
このメソッドは、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 サイトの他の関連記事を参照してください。