我在尝试检测值高于012的宏的像素,例如cvScalar(200,200,200)
。在一个帧上绘制矩形
然后我想用cv::rectangle
在所有像素上绘制一个矩形。任何人都可以帮助我如何做到这一点?
看到下面的这张图,正是我想要做的。 ! [图片]:http://technical-recipes.com/wp-content/uploads/2011/10/glove3.jpg
我在尝试检测值高于012的宏的像素,例如cvScalar(200,200,200)
。在一个帧上绘制矩形
然后我想用cv::rectangle
在所有像素上绘制一个矩形。任何人都可以帮助我如何做到这一点?
看到下面的这张图,正是我想要做的。 ! [图片]:http://technical-recipes.com/wp-content/uploads/2011/10/glove3.jpg
下面是如何解决你的问题:
inRange
。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();
谢谢阿斯特,但这只适用于一帧,我需要做到这一点在视频,直播,即使我线程这不会工作 – Engine
为什么它不起作用? – ArtemStorozhuk
它只是让我的流缓慢和2.it正是我的意思,我添加了一个图像我的问题,其中选择了相同颜色的两部分。再次感谢您的帮助 – Engine
我完全不知道要如何把你的矩形,您的矩形应如何看就像如果一个像素出两个具有高于一个值(200200200 )? –
或者你想创建一个矩形围绕所有具有高于(200,200,200)的值的点吗? –