好的,情况就是这样,我正在开发一个项目(在javafx,opencv,javacv中),其中包括打开网络摄像头选项。它打开得非常好。问题是,在关闭整个应用程序时,应用程序不会关闭。它(app)继续在后台运行。
查看下面的一些截图 -
这是打开的网络摄像头按钮。
当我点击它时,网络摄像头窗口打开,如下所示
当我关闭整个应用程序时
查看未禁用的红色按钮,即它当前正在后台运行。 为了更清楚,我在任务管理器中看到了它,然后看看
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();
}
}
那么,任何人都可以告诉我,为什么会这样,以及如何解决这个问题。