本文要解决的问题是针对一幅只包含文本的倾斜图片进行校正,可以作为一些OCR应用的预处理步骤,便于文字的识别。
读取图片
Mat srcImg = imread(filename, CV_LOAD_IMAGE_GRAYSCALE);if(srcImg.empty())return -1;
srcImg.empty()用来判断是否成功读进图像,如果srcImg中没有数据,在后面的步骤会产生内存错误。
由于处理的是文本,彩色信息不会提供额外帮助,所以要用CV_LOAD_IMAGE_GRAYSCALE表明以灰度形式读进图像。
假定读取的图像如下:
模拟倾斜图片(可选)
Point center(srcImg.cols/2, srcImg.rows/2); #ifdef DEGREE//Rotate source imageMat rotMatS = getRotationMatrix2D(center, DEGREE, 1.0);warpAffine(srcImg, srcImg, rotMatS, srcImg.size(), 1, 0, Scalar(255,255,255));imshow("RotatedSrc