如何在java opencv中实现Matlab imshow(image,[])?

时间:2013-12-25 09:55:25

标签: java javascript eclipse matlab opencv

我正在尝试为纹理特征提取实现MR8过滤器,我根据http://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html上的Matlab代码进行了编码。现在我想在卷积后显示38过滤后的图像。在matlab中,图像显示为imshow(F(:,:,1),[])。

我怎么能用java opencv做同样的事?

2 个答案:

答案 0 :(得分:0)

我使用它在Open Java中显示图像(在JFrame中):

public static void ShowImage(Mat img, String title, Integer...locs) {
    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.getContentPane().add(new JLabel(new ImageIcon(bufImage)));
        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle(title);

        if ((locs != null) && (locs.length > 0)) {
            frame.setLocation(locs[0], locs[1]);
        } else {
            frame.setLocation(START_X_LOC, START_Y_LOC);
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}

您只能使用图片Mat:

来调用它
ShowImage(imgMat, null, null);

或者,您可以添加标题或位置:

int[] loc = {100,200};
ShowImage(imgMat, "Image", loc);

希望它有所帮助。

答案 1 :(得分:0)

这是一个现成的解决方案,适用于Java OpenCV中的Imshow()等效它易于使用。 API将如下所示:

Imshow im = new Imshow("Title");
im.showImage(matimage);

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