对不起,如果我问一个愚蠢的问题,我正在尝试使用Java构建学习openCV。在opencv样本中,我发现在C++中有方法imshow或python中的showImage,但是我在opencv Java API中搜索,但找不到imshow方法。在opencv中imshow的等效方法Java build
使用Java构建的opencv中的imshow()和waitKey()的平等方法是什么?
对不起,如果我问一个愚蠢的问题,我正在尝试使用Java构建学习openCV。在opencv样本中,我发现在C++中有方法imshow或python中的showImage,但是我在opencv Java API中搜索,但找不到imshow方法。在opencv中imshow的等效方法Java build
使用Java构建的opencv中的imshow()和waitKey()的平等方法是什么?
还没有Java highgui包装(link)。你应该使用swing或swt来显示图像。请参阅:Opencv java - Load image to GUI
你必须使用Java的波动或AWT显示images..have看看运行的代码http://projectimageprocessing.blogspot.in/2013/05/introduction.html
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.getContentPane().add(new JLabel(new ImageIcon(bufImage)));
frame.pack();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
Java中已经没有更多的'HighGUI'模块可以使用'Imgcodecs' insead – 2018-01-26 08:51:01
这是Imshow(一个现成的解决方案),相当于在Java中的OpenCV 其简单使用。 API将如下所示:
Imshow im = new Imshow(“Title”);
im.showImage(matimage);
我做了Swing和AWT的东西。
首先,通过imencode
从垫IMG得到BufferedImage
和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);
我使用的目标bufImage
在JPanel的paintComponent()
方法。对于waitKey()
,我使用了KeyEventDispatcher
。
尽管这个链接可能回答这个问题,但最好在这里包含答案的基本部分并提供参考链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/18294231) – 2017-12-19 02:24:40
感谢汤姆阿兰达的审查。我重写我的内容。 – 2017-12-20 03:25:47
这是一个重大的改进。 :) – 2017-12-20 03:50:35
非常感谢答案,那么waitKey方法呢?与thread.sleep是一样的吗? – Orochi 2013-05-11 09:43:51
你实际上并不需要它...... – ArtemStorozhuk 2013-05-11 09:52:30
我明白了,呃,还有一件事,你知道如何启动一个摄像头,并从中获得实时信号。我的意思是,到目前为止,我设法通过摄像头捕捉到我的脸并检测到它,现在我想要做的是打开我的webcamera并检测我的脸而不捕捉它,它就像这样http://www.youtube.com/watch?v = HTk_UwAYzVk – Orochi 2013-05-11 12:44:16