Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV:如何获得每个轮廓的边界框?_C++_Opencv - Fatal编程技术网

C++ OpenCV:如何获得每个轮廓的边界框?

C++ OpenCV:如何获得每个轮廓的边界框?,c++,opencv,C++,Opencv,**~已更新~** 嗨,我有一个源文件,我把它转换成下图,我的程序中有一个轮廓 void find_contour(int, void*, Mat _mat) { Mat edge_detect_canny; vector<vector<Point> > contours; vector<Vec4i> hierarchy; findContours(_mat, contours, hierarchy, CV_RETR_TREE,

**~已更新~** 嗨,我有一个源文件,我把它转换成下图,我的程序中有一个轮廓

void find_contour(int, void*, Mat _mat)
{
    Mat edge_detect_canny;
    vector<vector<Point> > contours;
    vector<Vec4i> hierarchy;
    findContours(_mat, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
    Mat drawing = Mat::zeros(_mat.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, i, color, 1, 8, hierarchy, 1, Point());
        }
    IMshow(drawing, "draw-Res", 0);
    imwrite("c:\\draw.bmp", drawing);
    int cs = contours.size();
    cout << cs << "contour.size" << endl;
}

void find\u等高线(int、void*、Mat\u Mat)
{
垫子边缘检测;
矢量等值线;
向量层次;
findContours(_mat,轮廓,层次,CV_RETR_树,CV_CHAIN_近似,简单,点(0,0));
材料图纸=材料::零(_材料尺寸(),CV_8UC3);
对于(int i=0;icout您可以获得每个轮廓的边界框,如下所示:

Rect box = boundingRect(contours[i]); 
您可以将其绘制为:

rectangle(drawing, box, color);
因此,只需在
for
循环中添加这两行:

Rect box = boundingRect(contours[i]); 
rectangle(drawing, box, color);

@Miki hi,干得好,我尝试了这个例子,但不起作用我是opencv的初学者,我应该怎么做?敬请。请将您尝试的代码以及输入内容发布到问题中image@Miki:我更新帖子:)只需添加for循环:
Rect-box=boundingRect(轮廓[I]);矩形(图形、方框、颜色)
@Miki:非常感谢,你知道如何反转吗?就像我有一系列的边界矩形。我怎样才能把它们转换成轮廓?