OpenCV를 사용하여 용지 감지(사각형 감지)
초기 문제:
개발자가 OpenCV 정사각형 감지 예제를 성공적으로 구현했지만 출력이 불필요한 윤곽선으로 복잡해졌습니다. 목표는 추가 처리를 위해 결과를 필터링하여 종이 한 장의 네 모서리 점을 얻는 것입니다.
제안된 솔루션:
제공된 코드 조각은 다음을 사용하여 사각형을 감지합니다. 여러 임계값 수준을 사용하고 확장을 사용하여 가장자리 세그먼트 사이의 잠재적인 구멍을 제거합니다. 그러나 혼란스러운 부분을 필터링하지는 않습니다. 이 문제를 해결하려면 find_squares 함수를 다음과 같이 수정하세요.
void find_squares(Mat& image, vector<vector<Point> >& squares) { ... [code as before] ... // Filter out unnecessary contours and store the largest square vector<Point> largestSquare; double maxArea = 0; for (auto& square : squares) { double area = fabs(contourArea(Mat(square))); if (area > maxArea) { maxArea = area; largestSquare = square; } } squares.clear(); // Clear existing squares vector squares.push_back(largestSquare); // Store the largest square }
최종 출력:
이 수정 사항을 적용한 후 결과 벡터 사각형에는 4개만 포함됩니다. 감지된 용지의 모서리 지점을 이미지에서 가장 큰 정사각형으로 표시합니다. 그런 다음 이는 왜곡 감소 또는 추가 이미지 처리 작업에 사용될 수 있습니다.
위 내용은 종이의 네 모서리를 정확하게 감지하기 위해 OpenCV를 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!