泄漏cvFlip()或我弄乱的东西

时间:2014-08-21 10:31:13

标签: java memory-leaks javacv

我试图实现一个简单的应用程序来显示我的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

0 个答案:

没有答案