opencv Java build中imshow的等效方法

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

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

还没有Java highgui包装器( 链接 )。 你应该使用swing或swt来显示图像。 请参阅: Opencv java – 将图像加载到GUI

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(); } } 

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

Imshow im = new Imshow(“Title”);

im.showImage(matimage);

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

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

首先,通过imencodeImageIo.read从Mat img获取BufferedImage

  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的paintComponent()方法中使用了目标bufImage

对于waitKey() ,我使用了KeyEventDispatcher

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