2013-05-11 15 views
25

申し訳ありません私は愚かな質問をしている場合、私はJavaビルドを使用してopenCVを学ぼうとしています。 opencvのサンプルでは、​​メソッドのimshowがC++やshowImageのPythonであることがわかりましたが、opencv Java APIで検索しましたが、imshowメソッドが見つかりませんでした。opencv Javaビルドでのimshowの等価メソッド

Javaビルドでopencvのimshow()とwaitKey()と同等のメソッドは何ですか?

答えて

8

まだJavaハイギラッパーはありません(link)。画像を表示するには、swingまたはswtを使用する必要があります。参照:Opencv java - Load image to GUI

+0

お返事ありがとうございます、waitKeyメソッドはどうですか? thread.sleepと同じですか? – Orochi

+0

あなたは実際にそれを必要としません... – ArtemStorozhuk

+0

私は、ermm、もう一つのことを参照してください、あなたはどのようにウェブカメラを開始し、そこからライブフィードへのアクセスを知っていますか?私は、これまでのところ、私はWebカメラで自分の顔をキャプチャしてそれを検出することができます、今私がしたいのは私のwebcameraを開いて、それをキャプチャせずに私の顔を検出することです、それはこのようなものですhttp://www.youtube.com/watch?v = HTk_UwAYzVk – Orochi

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

3.0のJavaに 'HighGUI'モジュールがなくなりました。 –

6

これは、関数imshow(のための既製のソリューションです)使用する。 APIは次のようになります。

Imshow im = new Imshow( "Title");

im.showImage(matimage);

こちらをご覧 https://github.com/master-atul/ImShow-Java-OpenCV

1

私はスイングとAWTで何かを作りました。

まず、imencodeImageIo.read

 MatOfByte mMatOfByte = new MatOfByte() 
     imencode(".png", img, mMatOfByte); 
     byte[] byteArray = mMatOfByte.toArray(); 
     InputStream in = new ByteArrayInputStream(byteArray); 
     BufferedImage srcImage = ImageIO.read(in); 

第によってマットIMGからBufferedImageを取得し、(H、W)サイズの幅と高さを標的とし、ケースを拡張または減少させるクリーンな画像を取得するためにレンダリングヒントを使用するように変更。

  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を使用しました。

+0

の' Imgcodecs'をもう使用することができます。このリンクは質問に答えるかもしれませんが、ここで答えの重要な部分を含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](レビュー/低品質の投稿/ 18294231) –

+0

Tom Arandaさんのおかげです。私は自分のコンテンツを書き換えます。 –

+0

これは大きな改善です。 :) –