【发布时间】:2014-11-14 13:31:58
【问题描述】:
我正在使用 OpenCV 从具有不同背景和光照条件的图像中检测红色区域:
A) 理想条件:
B) 相似颜色背景:
C) 弱光:
我主要尝试使用inRange。首先在 BGR 颜色空间中,通过提取最小红色值约为 200 的像素。这在 A 和 B 中效果很好,但在 C强>(弱光)。我尝试将图像转换为 HSV 并为红色执行 inRange(借用 here):
Mat imgThresholded;
Mat imageHSV;
cvtColor(src, imageHSV, CV_BGR2HSV);
int iLowH = 0;
int iHighH = 50;
int iLowS = 100;
int iHighS = 255;
int iLowV = 80;
int iHighV = 255;
inRange(imageHSV,
Scalar(iLowH, iLowS, iLowV),
Scalar(iHighH, iHighS, iHighV),
imgThresholded);
return imgThresholded;
这适用于 A 和 C,但不适用于 B。
哪种方法最好?
谢谢!
【问题讨论】: