對不起,如果我問一個愚蠢的問題,我正在嘗試使用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