Подтвердить что ты не робот

OpenCV лучше обнаруживает красный цвет?

У меня есть следующее изображение:

введите описание изображения здесь

Я хотел бы обнаружить красный прямоугольник с помощью метода cv::inRange и цветового пространства HSV.

int H_MIN = 0;
int H_MAX = 10;
int S_MIN = 70; 
int S_MAX = 255;
int V_MIN = 50;
int V_MAX = 255;

cv::cvtColor( input, imageHSV, cv::COLOR_BGR2HSV );

cv::inRange( imageHSV, cv::Scalar( H_MIN, S_MIN, V_MIN ), cv::Scalar( H_MAX, S_MAX, V_MAX ), imgThreshold0 );

Я уже создал динамические трекбары, чтобы изменить значения для HSV, но я не могу получить желаемый результат.

Любое предложение для наилучших значений (и, возможно, фильтров) для использования?

4b9b3361

Ответ 1

В пространстве HSV красный цвет обтекает 180. Таким образом, значения H должны быть как в [0,10], так и [170, 180].

Попробуйте следующее:

#include <opencv2\opencv.hpp>
using namespace cv;

int main()
{
    Mat3b bgr = imread("path_to_image");

    Mat3b hsv;
    cvtColor(bgr, hsv, COLOR_BGR2HSV);

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

    Mat1b mask = mask1 | mask2;

    imshow("Mask", mask);
    waitKey();

    return 0;
}

Предыдущий результат:

введите описание изображения здесь

Диапазон добавления результата [170, 180]:

введите описание изображения здесь


Еще один интересный подход, который должен проверять только один диапазон:

  • инвертировать изображение BGR
  • конвертировать в HSV
  • искать голубой цвет.

Эта идея была предложена fmw42 и любезно указана Mark Setchell. Большое вам спасибо за это.

#include <opencv2\opencv.hpp>
using namespace cv;

int main()
{
    Mat3b bgr = imread("path_to_image");

    Mat3b bgr_inv = ~bgr;
    Mat3b hsv_inv;
    cvtColor(bgr_inv, hsv_inv, COLOR_BGR2HSV);

    Mat1b mask; 
    inRange(hsv_inv, Scalar(90 - 10, 70, 50), Scalar(90 + 10, 255, 255), mask); // Cyan is 90

    imshow("Mask", mask);
    waitKey();

    return 0;
}

введите описание изображения здесь