Netbeans中的Java应用程序未在十字按钮

时间:2017-07-27 20:02:16

标签: java opencv javafx webcam javacv

好的,情况就是这样,我正在开发一个项目(在javafx,opencv,javacv中),其中包括打开网络摄像头选项。它打开得非常好。问题是,在关闭整个应用程序时,应用程序不会关闭。它(app)继续在后台运行。

查看下面的一些截图 -

这是打开的网络摄像头按钮。

enter image description here

当我点击它时,网络摄像头窗口打开,如下所示

enter image description here

当我关闭整个应用程序时

enter image description here

查看未禁用的红色按钮,即它当前正在后台运行。 为了更清楚,我在任务管理器中看到了它,然后看看

enter image description here

java应用程序在后台运行。当我按下netbeans中的红色按钮时,任务管理器中的这个java程序就会消失,即关闭。

程序在关闭时不得在后台工作(直到我们使用Threads)。

以下是我正在做的代码。

import com.github.sarxos.webcam.WebcamPanel;
import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FrameGrabber;
import com.googlecode.javacv.OpenCVFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core;
import com.googlecode.javacv.cpp.opencv_highgui;
import java.time.LocalDateTime;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.event.EventHandler;
import javafx.stage.WindowEvent;

public class WCam //extends Thread
{

static WCam wc;
String globallocaldateAndtime="";
//@Override
//    public void run() 
//    {
    //super.run(); //To change body of generated methods, choose Tools |     
Templates.
public String method()
{
    opencv_highgui.CvCapture     
    capture=opencv_highgui.cvCreateCameraCapture(0);
    opencv_highgui.cvSetCaptureProperty(capture, 
    opencv_highgui.CV_CAP_PROP_FRAME_HEIGHT, 150);
    opencv_highgui.cvSetCaptureProperty(capture, 
    opencv_highgui.CV_CAP_PROP_FRAME_WIDTH, 200);

    opencv_core.IplImage grabbedImage=opencv_highgui.cvQueryFrame(capture);

    CanvasFrame frame=new CanvasFrame("Webcam");
    frame.setCanvasSize(200, 150);

    while(frame.isVisible() && (grabbedImage=opencv_highgui.cvQueryFrame(capture))!=null)
    {
        frame.showImage(grabbedImage);
        //imgviewStudentsPic.setImage(new Image(new FileInputStream(grabbedImage)));

    }


     OpenCVFrameGrabber grabber=new OpenCVFrameGrabber(0);
        try 
        {
            grabber.start();
            opencv_core.IplImage img=grabber.grab();  
            opencv_highgui.cvSaveImage("cap.jpeg",img);


        } 
        catch (FrameGrabber.Exception ex) 
        {
            Logger.getLogger(WCam.class.getName()).log(Level.SEVERE, null, ex);
        }


    opencv_highgui.cvReleaseCapture(capture);
    grabbedImage.release();



//}

}



    WebcamPanel panel=null;
    public static String doStartWebCam()
    {
        WCam webcam=new WCam();
        wc=webcam;
        webcam.method();


    }



}

那么,任何人都可以告诉我,为什么会这样,以及如何解决这个问题。

0 个答案:

没有答案