黑色物体检测在opencv中的HSV范围

sus*_*war 7 c++ opencv hsv

黑色物体检测的范围是多少?

我试过以下代码

cvInRangeS(imgHSV, cvScalar(0, 0, 0, 0), cvScalar(0, 255, 255, 0), imgThreshold);
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

elv*_*kaj 16

对于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);
Run Code Online (Sandbox Code Playgroud)

或者您可以使用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);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢大家的建议.cvInRangeS(imgHSV,cvScalar(0,0,0,0),cvScalar(180,255,40,0),imgThreshold); 它适用于黑色. (2认同)

rob*_*dra 5

HSVHSL颜色空间中的黑色被检测为低值(或HSL 中的亮度)。

HSL 中的白色检测到高值。白色是检测到具有高亮度和低饱和度的HSV

白色

cv::inRange(imgHSL, cv::Scalar(0, 0, 200, 0), cv::Scalar(180, 255, 255, 0), imgThreshold);
Run Code Online (Sandbox Code Playgroud)

或者

cv::inRange(imgHSV, cv::Scalar(0, 0, 200, 0), cv::Scalar(180, 20, 255, 0), imgThreshold);
Run Code Online (Sandbox Code Playgroud)