在框架上绘制矩形

Drawing rect on a frame

本文关键字:绘制 框架      更新时间:2023-10-16

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

之后,我想使用 cv::rectangle 在所有这些像素上绘制一个矩形。谁能帮我怎么做?

看到下面的这个图,这正是我想做的。![ 图片 ] : http://technical-recipes.com/wp-content/uploads/2011/10/glove3.jpg

这是我解决您的问题的方法:

  1. 我使用 inRange 找到了所有需要的像素。
  2. 在此之后,我找到了所有轮廓。
  3. 然后我用所有这些轮廓构建了大轮廓。
  4. 最后,找到这个大轮廓boundingRect并绘制出来。

下面是一个 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();