我正在使用以下代码来查找图像中的所有 Blob :
quad.convertTo(quad, CV_8UC1);
findContours( quad, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0) );
vector<vector<cv::Point> > contours_poly( contours.size() );
vector<cv::Rect> boundRect( contours.size() );
for( int i = 0; i < contours.size(); i++ )
{ approxPolyDP( Mat(contours[i]), contours_poly[i], 3, true );
boundRect[i] = boundingRect( Mat(contours_poly[i]) );
}
Mat drawing = Mat::zeros( quad.size(), CV_8UC3 );
for( int i = 0; i< contours.size(); i++ )
{
Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) );
drawContours( drawing, contours_poly, i, color, 1, 8, vector<Vec4i>(), 0, cv::Point() );
rectangle( drawing, boundRect[i].tl(), boundRect[i].br(), color, 2, 8, 0 );
}
结果是我得到了它,它似乎工作得很好,但是如何用鲜绿色绘制所有边界框?一些是白色和黄色,一个是绿色。有什么办法可以使它们全部变成绿色?这些 Blob 是侵 eclipse 文本。
最佳答案
rng.uniform
可以是关于[0,255]的统一随机律。所以你有随机的颜色...
尝试改变
Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) );
对于
Scalar color = Scalar(0,255, 0 );
使用BGR系统对颜色进行编码。 B = 0 G = 255 R = 0将变为绿色!
再见