Каков диапазон обнаружения объектов черного цвета?
я попробовал следующий код
cvInRangeS(imgHSV, cvScalar(0, 0, 0, 0), cvScalar(0, 255, 255, 0), imgThreshold);
но это не работает.
Для черного и белого цветов в диапазоне HSV необходимо установить максимальный диапазон оттенка (от 0 до 180) и насыщенность в максимальном диапазоне (от 0 до 255). Вы можете играть со значением, например, от 0 до 30 или 40 для черных и от 200 до 255 для белых.
// for black
cvInRangeS(imgHSV, cvScalar(0, 0, 0, 0), cvScalar(180, 255, 30, 0), imgThreshold);
// for white
cvInRangeS(imgHSV, cvScalar(0, 0, 200, 0), cvScalar(180, 255, 255, 0), imgThreshold);
Или вы можете использовать интерфейс C ++:
// for black
cv::inRange(imgHSV, cv::Scalar(0, 0, 0, 0), cv::Scalar(180, 255, 30, 0), imgThreshold);
// for white
cv::inRange(imgHSV, cv::Scalar(0, 0, 200, 0), cv::Scalar(180, 255, 255, 0), imgThreshold);
Черный цвет в HSV а также HSL цветовое пространство, обнаруживается с низким значением (или яркостью в HSL).
Белый цвет в HSL обнаружен с высоким значением.
Белый цвет HSV обнаружен с высокой легкостью и низкой насыщенностью.
для белых
cv::inRange(imgHSL, cv::Scalar(0, 0, 200, 0), cv::Scalar(180, 255, 255, 0), imgThreshold);
или же
cv::inRange(imgHSV, cv::Scalar(0, 0, 200, 0), cv::Scalar(180, 20, 255, 0), imgThreshold);