0

我正在编写一个显示连接到我的计算机的网络摄像头的应用程序。我将在这里编写代码,因为代码非常简单。

public static void main(String[] args) {
    JFrameImageDisplayer _window = new JFrameImageDisplayer();
    //webcamGrabber _wg = new webcamGrabber(); 
    //commented out because I am having trouble with this class.
}

JFrameImageDisplayer 打开一个框架,几乎就是它所做的一切。当我运行这段代码时,我打开了一个框架中带有 JLabel 的简单应用程序。如果我关闭应用程序,则整个进程终止(Windows 任务管理器进程选项卡中的进程也会终止)。

但是,一旦我创建了 _wg,即使在我关闭应用程序之后任务管理器中的进程也不会终止,最终只会消耗处理能力,直到我手动转到进程栏以结束它。

下面是 webcamGrabber 的构建代码。

{
    OpenCVFrameGrabber _grab = new OpenCVFrameGrabber(0);
    try{
        _grab.start();

    } catch (Exception e){
        e.printStackTrace();
    }
}
4

1 回答 1

1

好吧,我不太确定该怎么做。所以我手动释放了资源。

protected void processWindowEvent(WindowEvent e){
    if(e.getID() == WindowEvent.WINDOW_CLOSING) {
        try{_wg._grab.release();}
        catch(Exception ee){}
    }
    super.processWindowEvent(e);
}

不是最漂亮的方法,但它有效。

于 2013-02-27T08:02:50.047 回答