我正在尝试使用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。
答案 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图像的大小。
感谢您的帮助。 :)