0

我有一个项目来查找文本嵌入图像的旋转角度,并且我正在使用 Tess4j,所以我怎样才能获得正确的图像方向角度 Tess4j 中是否有任何选项可以以正确的方向旋转图像...

如果我将图像作为输入,那么输出应该是正确的定向图像...第一个图像作为输入,然后输出 2n 个图像,那么我该怎么做...。请帮助我 输入图像所需的 输出图像

4

4 回答 4

1

用于图像方向和页面分割

public class TestOrientation {
    public static void D() throws Exception {

        TessAPI api=LoadLibs.getTessAPIInstance();
        TessBaseAPI handle=TessAPI1.TessBaseAPICreate();

        File tiff = new File("C:/Users/atul/Desktop/test1.tif");
        String datapath = "C:/Tesseract/tessdata";
        String language = "eng";
        int expResult = TessPageSegMode.PSM_AUTO_OSD;
        IntBuffer orientation = IntBuffer.allocate(1);
        IntBuffer direction = IntBuffer.allocate(1);
        IntBuffer order = IntBuffer.allocate(1);
        FloatBuffer deskew_angle = FloatBuffer.allocate(1);

        BufferedImage image = ImageIO.read(new FileInputStream(tiff)); // require jai-imageio lib to read TIFF
        ByteBuffer buf = ImageIOHelper.convertImageData(image);
        int bpp = image.getColorModel().getPixelSize();
        int bytespp = bpp / 8;
        int bytespl = (int) Math.ceil(image.getWidth() * bpp / 8.0);
        api.TessBaseAPIInit3(handle, datapath, language);
        api.TessBaseAPISetPageSegMode(handle, TessPageSegMode.PSM_AUTO_OSD);
        int actualResult = api.TessBaseAPIGetPageSegMode(handle);

        api.TessBaseAPISetImage(handle, buf, image.getWidth(), image.getHeight(), bytespp, bytespl);
        int success = api.TessBaseAPIRecognize(handle, null);
        if (success == 0) {
            TessPageIterator pi = api.TessBaseAPIAnalyseLayout(handle);
            api.TessPageIteratorOrientation(pi, orientation, direction, order, deskew_angle);
            System.out.println("Orientation:" + orientation.get()+
                "\nWritingDirection:"+Utils.getConstantName(direction.get(), TessWritingDirection.class)+
                " \nTextlineOrder:" + Utils.getConstantName(order.get(), TessTextlineOrder.class)+
                "\nDeskew angle: %.4f\n"+deskew_angle.get());
        }
    }

    public static void main(String[] args) {
        try {
            D();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
于 2016-02-19T07:53:32.880 回答
1
BufferedImage image = ImageIO.read(new File("C:\\myimg-tilt.jpg"));
ImageDeskew id = new ImageDeskew(image);
image = ImageHelper.rotateImage(image, -id.getSkewAngle());
于 2020-02-10T07:29:54.637 回答
1

Tess4J 支持确定图像的倾斜角度和旋转它。查看其 API文档页面了解更多信息。

于 2016-02-17T04:01:56.607 回答
0

您可以使用 OpenCV 进行此操作。首先,您需要计算图像的倾斜角度。然后,您可以使用您找到的角度旋转图像。

您可以查看此链接。这真的很有帮助。但是你需要将它实现到Java。

http://felix.abecassis.me/2011/09/opencv-detect-skew-angle/

于 2016-02-16T14:51:37.027 回答