그림에서 각 개체의 경계 상자를 찾고 싶습니다. 발견 한 후에 경계 상자를 잘라서 다음 단계에 사용합니다. Here is the input picture after preprocessing. 경계 상자에 대한 코드가 있지만 객체 1 개에서만 제대로 작동합니다. 객체가 2 개있는 경우 두 객체의 합계를 계산하고 둘 다에 경계 상자를 그립니다. Here is the first output. 그것의 코드는 다음과 같습니다 I 시도테두리 상자가있는 개체 찾기
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);
}
secound 것은 OpenCV의의 문서의 코드를 사용했다. 여기서 CV_RETR_TREE를 findContours에서 CV_RETR_EXTERNAL로 바꿨지 만 여전히 많은 경계 상자에 도달하고 상자를 잘라내는 방법을 모르겠습니다.
고맙습니다.
도움 주셔서 감사합니다. 나는 다음 번에 그것을 명심 할 것이다. 이제 작동합니다! – Mani
내가 준이 코드는 자바 언어로되어 있다는 것을 잊어 버렸습니다. Java에서 opencv의 클래스는 이름이 약간 다르므로 어떤 어려움이 있었는지 사과드립니다. 통합하기 쉽고 아직 undestand 아직하지 않은 경우, –
아무 문제 없어 나는 그것을 이해하고 내 코드에서뿐만 아니라 그것을 사용합니다. 고맙습니다 :) – Mani