我试图实现一个简单的应用程序来显示我的webcamera,它运行良好,直到我尝试翻转输出流。在我翻转流后,程序开始泄漏。奇怪的是当我翻转流时我唯一的泄漏,我不知道为什么,因为我试图释放一切。当我不翻转时,泄漏消失了。 (当我注释掉所有释放线时,它仍然会泄漏)
我通过这些方法从GrabCamera
获取了我的图片来源:
private void StartWebcamera(){
cameraThread = new Thread(){
public void run(){
while ((grabbedImage = opencv_highgui.cvQueryFrame(capture)) != null) {
grabbedImage.release();
}
}
};
cameraThread.start();
}
public IplImage GetGrabbedStream(){
return grabbedImage;
}
在我的主要内容中,我将图像传递给我的GUI类,如下所示:
while (true) {
gui.SetVideoStream(grabCamera.GetGrabbedStream(), true);//if true its leaking if false its not leaking
}
我在GUI类中显示我的图像:
public void SetVideoStream(IplImage img,boolean flip){
if (flip) {
IplImage mirrorImage = img.clone();
cvFlip(img, mirrorImage, 1);
cameraFeed.setImage(mirrorImage.getBufferedImage());
videoPanel.setIcon(cameraFeed);
videoPanel.repaint();
mirrorImage.release();
img.release();
}
else {
cameraFeed.setImage(img.getBufferedImage());
videoPanel.setIcon(cameraFeed);
videoPanel.repaint();
img.release();
}
}
以下是完整的课程: Classes