我想找到图片中每个对象的边界框,并且在发现该边界框后,我将边界框剪出并用于下一步。 Here is the input picture after preprocessing. 我有一个边界框的代码,但它只适用于1个对象。如果有2个物体,它们都会将它们相加并在它们周围画一个边界框。 Here is the first output.它的代码是:使用边界框查找对象
vector<vector<Point>> contours;
vector<Point> points;
findContours(erod, contours, CV_RETR_LIST, CV_CHAIN_APPROX_NONE);
for (size_t i = 0; i < contours.size(); i++) {
for (size_t j = 0; j < contours[i].size(); j++) {
Point p = contours[i][j];
points.push_back(p);
}
}
if (points.size() > 0) {
Rect brect = boundingRect(Mat(points).reshape(2));
cv::rectangle(erod, brect.tl(), brect.br(), Scalar(100,100,200), 2, CV_AA);
Mat ROI = frame(brect);
}
我尝试的事情谢胜利使用的OpenCV的文件的代码。在这里,我将findContours中的CV_RETR_TREE更改为CV_RETR_EXTERNAL,但我仍然遇到很多边界框,并且我不知道如何裁剪这些框。
非常感谢!
谢谢你的帮助。我将在下一次记住这一点。它现在有效! – Mani
我忘了说这段代码是用Java语言编写的,Java中opencv的类名有些不同,所以如果它给你带来任何困难,我很抱歉。如果你还没有完成,应该很容易整合和展开, –
没问题我理解它,并在我的代码中使用它。谢谢 :) – Mani