我正在尝试检测值高于cvScalar(200,200,200)
的像素。
之后我想使用cv::rectangle
在所有像素上绘制一个矩形。有人可以帮我怎么做吗?
请参阅下图,这正是我想要做的。 ![image]:http://technical-recipes.com/wp-content/uploads/2011/10/glove3.jpg
答案 0 :(得分:2)
以下是我如何解决您的问题:
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();