뒤틀린 이미지에서 일반 직사각형을 기꺼이 가져옵니다. 예를 들어OpenCV에서 마름모 모양의 모서리를 찾고 작은 사각형을 잘라내는 방법은?
, 나는 이미지의 이런 종류의 일단 :
을 ...하지만 내 코드는 다음과 같습니다
... 나는 다음과 같은 사각형 영역 기자를 자르고 싶습니다을 MY 코드 노호 도시
:
int main(int argc, char** argv) {
cv::Mat img = cv::imread(argv[1]);
// Convert RGB Mat to GRAY
cv::Mat gray;
cv::cvtColor(img, gray, CV_BGR2GRAY);
// Store the set of points in the image before assembling the bounding box
std::vector<cv::Point> points;
cv::Mat_<uchar>::iterator it = gray.begin<uchar>();
cv::Mat_<uchar>::iterator end = gray.end<uchar>();
for (; it != end; ++it) {
if (*it)
points.push_back(it.pos());
}
// Compute minimal bounding box
Rect box = cv::boundingRect(cv::Mat(points));
// Draw bounding box in the original image (debug purposes)
cv::Point2f vertices[4];
vertices[0] = Point2f(box.x, box.y +box.height);
vertices[1] = Point2f(box.x, box.y);
vertices[2] = Point2f(box.x+ box.width, box.y);
vertices[3] = Point2f(box.x+ box.width, box.y +box.height);
for (int i = 0; i < 4; ++i) {
cv::line(img, vertices[i], vertices[(i + 1) % 4], cv::Scalar(0, 255, 0), 1, CV_AA);
cout << "==== vertices (x, y) = " << vertices[i].x << ", " << vertices[i].y << endl;
}
cv::imshow("box", img);
cv::imwrite("box.png", img);
waitKey(0);
return 0;
}
이 큰 프레임을 추출
마름모꼴 모서리를 찾고이를 더 작은 사각형으로 축소하는 방법에 대한 아이디어가 있습니까?
당신은 뒤틀린 이미지를 생성하는 데 사용되는 코너 지점이 일이 있습니까? 그렇게하면이 문제는 훨씬 더 쉽게됩니다. – Aurelius