gpt4 book ai didi

android - 在 C++ OpenCV 中查找倾斜角度并旋转图像

转载 作者:太空宇宙 更新时间:2023-11-03 23:02:17 26 4
gpt4 key购买 nike

需要帮助,请看下面的问题,我第二次问这个问题,因为上次我没有得到任何答案。考虑以下两个链接 => 1:=> Finding Skew Angle 2:=> Rotating Image as per skew angle

我也想这样做,这个链接上给出的代码运行良好。但问题是,请参阅这些图像中显示的文本,此代码仅适用于对齐良好的文本(如给定链接上的图像中显示的那样),但当您的文本呈分散形式时,它会失败。请告诉我如何处理包含分散形式文本的图像..?提前致谢..!! [这里的主要挑战是找到正确的倾斜角度..]因为这个问题我很沮丧...请帮助...!!!

我的代码如下:=>

// 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);

}

最佳答案

如果文本分散,这种方法注定会失败,因为它依赖于查找长文本行。此外,术语“倾斜”在这种情况下有点不幸,因为它在已发布的示例中是纯粹的旋转。

我要做的是在一系列方向上进行线投影(参见 Radon 变换或 Hough 线搜索)。当您的线投影具有正确的方向时,线投影中会有很多由行间间隙引起的零。在投影中产生最多零值的方向是文本最可能的旋转角度。

关于android - 在 C++ OpenCV 中查找倾斜角度并旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14577874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com