Swing 如何在JFrame上显示视频(捕获为BuffereImage)?

Swing 如何在JFrame上显示视频(捕获为BuffereImage)?,swing,user-interface,webcam,Swing,User Interface,Webcam,我想从webacam捕获并显示视频。对于捕获,我使用的是可以转换为缓冲图像的IplImage。如何在JFrame上显示此图像 注意:我希望显示视频而不是单个图像,即图像应在使用JavaCV lib从网络摄像头捕获时不断更新。可以使用类图形在JPanel中绘制BuffereImage,而不使用IplImages 下面是一个在JFrame内的JPanel中显示网络摄像头图像的示例 try { OpenCVFrameGrabber camera = new OpenCVFrameGra

我想从webacam捕获并显示视频。对于捕获,我使用的是可以转换为缓冲图像的IplImage。如何在JFrame上显示此图像


注意:我希望显示视频而不是单个图像,即图像应在使用JavaCV lib从网络摄像头捕获时不断更新。可以使用类图形在JPanel中绘制BuffereImage,而不使用IplImages

下面是一个在JFrame内的JPanel中显示网络摄像头图像的示例

try {
        OpenCVFrameGrabber camera = new OpenCVFrameGrabber(0);
        OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat();
        Java2DFrameConverter converterBuffered = new Java2DFrameConverter();

        Frame capturedFrame = null;
        Mat matImage = null;
        camera.start();
        while ((capturedFrame = camera.grab()) != null) {
            matImage = converter.convertToMat(capturedFrame);

            BufferedImage bufferedImage = converterBuffered.convert(capturedFrame);

            Graphics g = imageView.getGraphics(); //getting the Graphics Class of the JPanel named as imageView
            g.drawImage(bufferedImage, 10,10, bufferedImage.getWidth(), bufferedImage.getHeight(),imageView); //this imageView is a JPanel component

        }
        camera.stop();

    } catch (FrameGrabber.Exception ex) {
        System.out.println("Fail to capture frame");
        //this catch clause refer to errors on opening the camera or failure on capture of frame.
    }

由于您使用的是
Swing
,因此您应该使用
JLabel
,因此没有理由(但您可能希望)自己实现绘图。看到了吗。@Boro使用
JLabel
会有效果吗,因为我想连续地捕捉和绘制图像?这也使得这个问题略有不同。现在不要担心性能。首先构建捕获和显示。然后您可以自己在代码上测试这两种方法。