도움이 필요하십니까, 다음 질문을 참조하십시오. 나는이 질문을 두 번째 질문합니다. 지난 번 응답을 얻지 못했기 때문입니다. 두 링크 다음 고려 => 1:=> Finding Skew Angle 2:=> Rotating Image as per skew angle기울이기 각도 찾기 및 C++에서 이미지 회전 OpenCV
내가 같은 일을하고 싶어,이 링크에 주어진 코드가 잘 작동합니다. 그러나 문제는이 이미지에 표시된 텍스트를 보면,이 코드는 잘 정렬 된 텍스트 (지정된 링크의 이미지에 표시됨)에서 제대로 작동하지만 텍스트가 흩어져있는 형태 일 때 실패합니다. 흩어져있는 양식의 텍스트가 포함 된 이미지의 경우 어떻게해야합니까? 미리 감사드립니다 .. !! [여기에 주요 도전은 정확한 각도를 찾는 것입니다 ..] 나는이 문제로 인해 매우 좌절했습니다 ... Plz Help .. !!! 다음과 같이
내 코드는 다음과 같습니다 =>
// Find Skew angle.
double compute_skew(const char* filename)
{
// Load in grayscale.
cv::Mat img = cv::imread(filename, 0);
// Binarize
cv::threshold(img, img, 225, 255, cv::THRESH_BINARY);
// Invert colors
cv::bitwise_not(img, img);
cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 3));
cv::erode(img, img, element);
std::vector<cv::Point> points;
cv::Mat_<uchar>::iterator it = img.begin<uchar>();
cv::Mat_<uchar>::iterator end = img.end<uchar>();
for (; it != end; ++it)
if (*it)
points.push_back(it.pos());
cv::RotatedRect box = cv::minAreaRect(cv::Mat(points));
double angle = box.angle;
if (angle < -45.)
angle += 90.;
cv::Point2f vertices[4];
box.points(vertices);
for(int i = 0; i < 4; ++i)
cv::line(img, vertices[i], vertices[(i + 1) % 4], cv::Scalar(255, 0, 0), 1, CV_AA);
std::cout << "File **************Angle***************** " << filename << ": " << angle << std::endl;
return angle;
}
// Rotate Image according to skew angle.
void deskew(const char* filename, double angle)
{
cv::Mat img = cv::imread(filename, 0);
Point2f src_center(img.cols/2.0F, img.rows/2.0F);
Mat rot_mat = getRotationMatrix2D(src_center, angle, 1.0);
Mat rotated;
warpAffine(img, rotated, rot_mat, img.size(), cv::INTER_CUBIC);
imwrite(filename,rotated);
}
여기에 다시 나타납니다. 너 뭐 해봤 니? –
여기에 내 코드를 넣을까요? 당신이보고 싶다면 ... –
예, 사람들은 이런 식으로 문제를 더 빨리 푸는 경향이 있습니다. –