我正在開發一種簡單的防盜java應用程序作爲大學項目。它通過攝像機記錄場景,並通過製作像素差異來檢測場景中發生的許多變化(您可以在這裏看到完整的源代碼:https://github.com/lmammino/movementDetector)。 我使用opencv java綁定來處理我需要在圖像上執行的各種操作。
我有一些問題,我希望用戶通過使用主用戶界面中的某些按鈕來啓動/停止/重新啓動視頻捕獲過程。
要捕獲視頻流,我使用java opencv提供的類CanvasFrame
和OpenCVFrameGrabber
。我有一個deveoped一個Runnable
類叫做Detector
(完整的源代碼在這裏:http://bit.ly/l1Z3tY)java opencv應用程序線程問題
的Detector
類通過調用其start方法自動運行自己的新主題:
public void start()
{
if (this.thread == null)
this.thread = new Thread(this);
this.isThreadActive = true;
this.thread.start();
}
我第一次調用start方法從Detector
實例一切工作正常。 當我嘗試停止並重新啓動過程時,它會給出無效的線程狀態異常...
因此,我認爲整個問題在這裏:「什麼是啓動/停止/重新啓動線程的最佳方式?
TNX
如何多次運行runnable?它會像單獨的線程一樣工作嗎? (TNX無論如何) –
@Luciano:你可以採取相同的Runnable並將其傳遞到一個新的線程,如:Thread mynewThread = new Thread(oldrunnable); mynewThread.start(); –
我有'無效的內存訪問的位置0x0 rip = 0x7fff873bdf10'當我嘗試殺死線程...它似乎與'libopencv_highgui.2.2.dylib'插件(mac綁定到opencv gui)相關的東西 –