我是Stackoverflow和OpenCV編程領域的新手。 我使用OpenCV Bindings for Java(opencv.org官員,而不是JavaCV)製作了一些項目,如通過ORB和SURF功能進行對象識別,處理圖像。一切還好。 現在我正在轉向視頻流中的對象識別。我想從網絡攝像頭抓取流並應用對象識別。 我不是Java大師,所以我在OpenCV中找到了VideoCapture類,但是我無法從相機獲取圖片。OpenCV 2.4.4 Java - 抓取Webcam圖片/流(OSX)
我在OSX Mountain Lion中使用OpenCV 2.4.4綁定在Eclipse中運行我的項目。
結果在控制檯:
Hello, OpenCV
Camera OK?
Frame Obtained
Captured Frame Width 0
Invalid memory access of location 0x7fae00000000 rip=0x7fff8b4c5263
代碼:
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
import org.opencv.highgui.VideoCapture;
public class Webcam {
public static void main (String args[]){
System.out.println("Hello, OpenCV");
// Load the native library.
System.loadLibrary("opencv_java244");
VideoCapture camera = new VideoCapture(0);
camera.open(0); //Useless
if(!camera.isOpened()){
System.out.println("Camera Error");
}
else{
System.out.println("Camera OK?");
}
Mat frame = new Mat();
//camera.grab();
//System.out.println("Frame Grabbed");
//camera.retrieve(frame);
//System.out.println("Frame Decoded");
camera.read(frame);
System.out.println("Frame Obtained");
/* No difference
camera.release();
*/
System.out.println("Captured Frame Width " + frame.width());
Highgui.imwrite("camera.jpg", frame);
System.out.println("OK");
}
}
嘗試編碼圖像作爲巴紐。 – 2013-04-05 15:02:58
問題不在於圖像格式。控制檯顯示圖像寬度爲0.將圖像格式更改爲PNG會將控制檯中的最後一行更改爲:「libpng警告:IHDR中的圖像寬度爲零」; 「libpng警告:IHDR中圖像高度爲零」; 「libpng錯誤:無效的IHDR數據」。 – 2013-04-05 21:46:37
已解決。問題只是相機需要時間進行初始化。我已經添加了「Thread.sleep(1000);」 「視頻捕捉攝像頭=新的視頻捕捉(0)後」。 – 2013-04-11 10:39:01