30

ばかげた質問をしている場合は申し訳ありませんが、Java ビルドを使用して openCV を学習しようとしています。opencv サンプルでは、​​C++ にメソッド imshow または python に showImage があることがわかりましたが、opencv Java API で検索すると、imshow メソッドが見つかりません。

Javaビルドでopencvのimshow()とwaitKey()のequalメソッドとは?

4

5 に答える 5

28
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();
    }
}
于 2013-09-07T06:23:57.677 に答える
11

Java highgui ラッパーはまだありません (リンク)。画像を表示するには、swing または swt を使用する必要があります。参照: Opencv Java - イメージを GUI にロード

于 2013-05-11T08:02:02.650 に答える
3

私はswingとawtで何かを作りました。

まず、BufferedImageMat img から取得imencodeします。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);

bufImageJPanelのpaintComponent()メソッドでターゲットを使用しました。

のためwaitKey()に、私は使用しKeyEventDispatcherました。

于 2017-12-19T02:03:23.223 に答える
2

画像を表示するには、Javaスイングまたはawtを使用する必要があります..実行中のコードを見てくださいhttp://projectimageprocessing.blogspot.in/2013/05/introduction.html

于 2013-06-20T06:49:42.053 に答える