我剛剛在我的mac air上通過我的第一次opencv安裝,我一直試圖從內置在屏幕上的相機輸入輸入。據我所知,我有正確運行在Eclipse中的庫,因爲我每次嘗試調用任何方法時都不會發生大量錯誤。然而,現在發生的情況是網絡攝像頭出現問題,這看起來是正確創建的,傳遞給構造函數的值爲0(1-50返回任何內容,-1相信是默認值)。但是當我嘗試用它來取回框架時,墊子總是空的。OpenCV- Webcam框架不能在Java中的macbook上工作
據我所知,看起來我能夠訪問攝像頭,但是在代碼之間會出現某種斷開,並且能夠實際激活攝像頭以拍攝視頻。如果它很重要,則表示大多數節目的攝像機處於活動狀態的燈一直保持不活動狀態。
相關的代碼在下面發佈。我將非常感謝您可能擁有的任何洞察力,或者在java中使用代碼從Java攝像頭中獲取圖像的示例。謝謝!
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
VideoCapture camera = new VideoCapture(0);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//camera.open(0); //Useless
if(!camera.isOpened()){
System.out.println("Camera broken");
}
else{
System.out.println("Camera OK!");
}
Mat frame = new Mat();
camera.read(frame);
System.out.println("width:" + frame.width());
Highgui.imwrite("myframe.png", frame);
輸出是:
Camera OK!
width:0
libpng warning: Image width is zero in IHDR
libpng warning: Image height is zero in IHDR
libpng error: Invalid IHDR data
Cleaned up camera.
我在Windows和Linux上有類似的東西,我所要做的就是改變'VideoCapture'調用的索引。你說從1-50的指數什麼都不會返回。你能說出究竟發生了什麼嗎?我注意到,有時我需要使用相機關閉所有其他程序,以前沒有工作的程序纔有效。 –
嗯,我會給你一個鏡頭,並嘗試重新啓動一切,並嘗試從頭開始運行,這將不得不等待直到今晚。當我試圖打開0-50,然後檢查是否camera.isopen(),它返回沒有但0插槽被打開。所以我認爲其他人是保留有其他相機,這是有道理的。我不應該說我運行了一些運行https://github.com/sarxos/webcam-capture的軟件,它可以讓我找回一張圖片,但是它的質量很差,我真的很想將它保留在openCV中。 – Ness
是的,openCV已經不是很直接,所以在頂部添加更多的庫可能沒有幫助:P我從來沒有在java中使用過openCV,但我可以在python中給你寫一段代碼,它將通過所有相機並嘗試拍照,也許你可以在那裏工作,並用java重現它。但是請儘量關閉所有東西並重新啓動,它可能就像我這樣做:D –