【问题标题】:How can I implement Matlab imshow(image,[]) in java opencv?如何在 java opencv 中实现 Matlab imshow(image,[])?
【发布时间】:2013-12-25 09:55:25
【问题描述】:

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

如何使用 java opencv 做同样的事情?

【问题讨论】:

  • 你能澄清一下,如果你说的是opencv的java包装器,还是javacv?
  • 更具体地说,我希望在 javacv 中显示图像,就像在 matlab imshow(I,[low high]) 中一样,我该怎么做?

标签: java javascript eclipse matlab opencv


【解决方案1】:

我用它在 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);

希望对你有帮助。

【讨论】:

    【解决方案2】:

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

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

    访问这里https://github.com/master-atul/ImShow-Java-OpenCV

    【讨论】:

      猜你喜欢
      • 2014-05-28
      • 1970-01-01
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      • 2019-02-12
      • 2012-03-16
      • 1970-01-01
      相关资源
      最近更新 更多