OpenCV调整捕获的IPLImage大小?

时间:2017-10-25 10:38:14

标签: java swing opencv

我正在尝试使用OpenCV捕获图像并使其成为流并在用户界面中显示。我一直在使用以下代码来显示图像:

OpenCVFrameGrabber grabber;
JLabel webCamScreen__ = null;

grabber = new OpenCVFrameGrabber("VIDEO IP-ADDRESS");
grabber.setImageHeight(webCamScreen__.getHeight());
grabber.setImageWidth(webCamScreen__.getWidth());

grabber.start();

while (true) {
    IplImage grabbedImage = grabber.grab();    
    this.webCamScreen__.setIcon(new ImageIcon(grabbedImage.getBufferedImage()));

}

grabber.stop();

捕获的图像显示在JLabel组件中,我想调整接收到的图像大小以适应组件内部。图像宽高比应保持不变。现在,收到的图像会覆盖grapper的imageHeigth和imageWidth。

2 个答案:

答案 0 :(得分:0)

除非您有特定的反向兼容性问题,否则请避免使用长时间不推荐使用的IPLImage。

改为使用Mat

答案 1 :(得分:0)

我终于找到了解决方案:

IplImage origImg = grabber.grab();
resizedImage = IplImage.create(webCamScreen__.getWidth(), webCamScreen__.getHeight(),
                        origImg.depth(), origImg.nChannels());
opencv_imgproc.cvResize(origImg, resizedImage);
this.webCamScreen__.setIcon(new ImageIcon(resizedImage.getBufferedImage()));

opencv_imgproc有一个resize函数,通过它我可以调整IPL图像的大小。

感谢您的帮助。 :)