c++ - 绘制特定颜色的矩形 OpenCV

标签 c++ opencv drawing bounding-box

我使用以下代码来查找图像中的所有 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 的文本。

enter image description here

最佳答案

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 将是绿色的!

再见,

关于c++ - 绘制特定颜色的矩形 OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22947128/

相关文章:

c++ - 如何测量队列中每秒弹出/推送的速率?

python - OpenCV Python 不能使用 SIFT

python - 找到带有孔的多个对象的轮廓

c# - 如何使用 C# 渲染 pdf

python - 如何使用 matplotlib 使绘图的 xtick 标签成为简单的绘图?

c# - 自定义控件中的双缓冲子控件(C#)

C++:是否有更简洁的方式来表示自定义数字类型?

c++ - 如何在 c++ 中获取有关崩溃程序的一些信息以供将来调试

c++ - 创建指针时没有调用构造函数吗?

c++ - OpenCV:在一个窗口中录制素材并在第二个窗口中显示相同的视频,但仅包含轮廓