我想在此图像处理程序中使用 leptonica(http://leptonica.org/)库而不是 opencv ,并且希望对单个字符进行去歪斜(更多)特别是一个数字)。我尝试了pixDeskew()
方法,但是没有用(警告Warning in pixFindSkewSweepAndSearchScorePivot: max found at sweep edge
无效)。我的猜测是我的图像输入很小,只有一个字符,但是pixDeskew()
处理文本页面。
我在opencv中使用了以下方法来获得不错的结果:
Mat deskew(Mat& img) {
Moments m = moments(img);
if(abs(m.mu02) < 1e-2)
return img.clone();
double skew = m.mu11 / m.mu02;
Mat warpMat = (Mat_<double>(2, 3) << 1, skew, -0.5 * img.cols * skew, 0, 1 , 0);
Mat imgOut = Mat::zeros(img.rows, img.cols, img.type());
warpAffine(img, imgOut, warpMat, imgOut.size(), WARP_INVERSE_MAP|INTER_LINEAR);
return imgOut;
}
可在Internet上(opencv教程网站的某些页面上)找到代码块,其中包含一些opencv函数。但是,我非常想使用leptonica而不是opencv复制此内容。任何想法都欢迎。谢谢。