在opencv Java构建中进行imshow的等效方法

时间:2013-05-11 07:35:35

标签: java opencv

对不起,如果我问一个愚蠢的问题,我正在尝试使用Java构建学习openCV。在opencv示例中,我发现在c ++中有方法imshow或在python中有showImage,但我在opencv Java API中搜索,我找不到imshow方法。

使用Java构建在opencv中使用imshow()和waitKey()的方法是什么?

5 个答案:

答案 0 :(得分:28)

public static void showResult(Mat img) {
    Imgproc.resize(img, img, new Size(640, 480));
    MatOfByte matOfByte = new MatOfByte();
    Highgui.imencode(".jpg", img, matOfByte);
    byte[] byteArray = matOfByte.toArray();
    BufferedImage bufImage = null;
    try {
        InputStream in = new ByteArrayInputStream(byteArray);
        bufImage = ImageIO.read(in);
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        frame.getContentPane().add(new JLabel(new ImageIcon(bufImage)));
        frame.pack();
        frame.setVisible(true);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

答案 1 :(得分:9)

还没有Java highgui包装器(link)。你应该使用swing或swt来显示图像。请参阅:Opencv java - Load image to GUI

答案 2 :(得分:7)

这是Java OpenCV中Imshow()等效的现成解决方案 它使用简单。 API将如下所示:

Imshow im = new Imshow(“Title”);

im.showImage(matimage);

访问此处 https://github.com/master-atul/ImShow-Java-OpenCV

答案 3 :(得分:3)

我用摇摆和awt制作了一些东西。

首先,通过BufferedImageimencode

从Mat img获取ImageIo.read
        MatOfByte mMatOfByte = new MatOfByte()
        imencode(".png", img, mMatOfByte);
        byte[] byteArray = mMatOfByte.toArray();
        InputStream in = new ByteArrayInputStream(byteArray);
        BufferedImage srcImage = ImageIO.read(in);

其次,将其更改为目标大小宽度和高度(w,h),并使用“渲染提示”在扩展或缩小大小写时获得干净的图像。

            bufImage = new BufferedImage(w, h, srcImage.getType());
            Graphics2D g = bufImage.createGraphics();
            g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
            g.drawImage(srcImage, 0,0, w, h, 0, 0, srcImage.getWidth(), srcImage.getHeight(), null);

我在JPanel的bufImage方法中使用了目标paintComponent()

对于waitKey(),我使用了KeyEventDispatcher

答案 4 :(得分:2)

你必须使用java swings或awt来显示图像..看看正在运行的代码http://projectimageprocessing.blogspot.in/2013/05/introduction.html