我正在为android开发一个OCR应用程序(构建为java Application).我想检测从相机捕获的图像中的文本和预处理我正在使用OpenCV,但我得到一些额外的行作为文本读取,我已遵循这种方法:
1-RGB到GreyScale 2-Threshold 3-Gaussian Blur 4-Median Blur 5-Dilation 6-Erosion
结果至少比以前好,但仍然没有得到正确的结果.我怎样才能消除这种噪音,这些过滤器的一般序列是什么,可以应用于任何图像以改善OCR的结果.我是OpenCV的新手,请指导我.谢谢.
从上面的图像我能够找到3号的结果,但只有当所有的轮廓被绘制,这是我不想要的东西,因为还有噪音.我在这里缺少什么.不知道该怎么做进一步.修订代码:
package simple_contours;
import java.util.ArrayList;
import java.util.List;
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;
public class Main {
public static void main(String[] args) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
Mat src_img,src_grey,src_blur,src_thresh,src_dilate,dest_img;
src_img=Highgui.imread("n_num.jpg",Imgproc.COLOR_BGR2GRAY);
src_grey=new Mat(src_img.size(), Core.DEPTH_MASK_8U);
src_blur=new Mat(src_img.size(), Core.DEPTH_MASK_8U);
src_thresh=new Mat(src_img.size(), Core.DEPTH_MASK_8U);
src_dilate=new Mat(src_img.size(), Core.DEPTH_MASK_8U);
dest_img=Mat.zeros(640,480, CvType.CV_8UC3);
Core.bitwise_not(dest_img, dest_img);
Highgui.imwrite("dest.jpg", dest_img);
Imgproc.cvtColor(src_img, src_grey, Imgproc.COLOR_BGR2GRAY);
Imgproc.GaussianBlur(src_grey, src_blur, new Size(3, 3), …Run Code Online (Sandbox Code Playgroud)