在框架上绘制矩形

时间:2012-12-15 21:55:31

标签: c++ opencv

我正在尝试检测值高于cvScalar(200,200,200)的像素。

之后我想使用cv::rectangle在所有像素上绘制一个矩形。有人可以帮我怎么做吗?

请参阅下图,这正是我想要做的。 ![image]:http://technical-recipes.com/wp-content/uploads/2011/10/glove3.jpg

1 个答案:

答案 0 :(得分:2)

以下是我如何解决您的问题:

  1. 我使用inRange找到了所有需要的像素。
  2. 在此之后,我找到了所有的轮廓。
  3. 然后我从所有这些轮廓构造了大轮廓。
  4. 最后,找到了这个大轮廓的boundingRect并绘制它。
  5. 这是一个c ++代码:

    Mat src = imread("image.jpg"), mask;
    
    const Scalar minScalar = Scalar(200, 200, 200);
    const Scalar maxScalar = Scalar(255, 255, 255);
    
    inRange(src, minScalar, maxScalar, mask);
    
    vector<vector<Point2i> > contours;
    
    findContours(mask, contours, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);
    
    vector<Point2i> bigContour;
    for (int i=0; i<contours.size(); i++)
    {
        for (int j=0; j<contours[i].size(); j++)
        {
            bigContour.push_back(contours[i][j]);
        }
    }
    
    Rect rect = boundingRect(bigContour);
    rectangle(src, rect, Scalar(255, 0, 255));
    
    imshow("Image", src);
    waitKey();