OpenCV 2.4.4 Java - Schnappen Webcam Bild/stream (OSX)

Ich bin neu in der Welt von Stackoverflow und in der OpenCV-Programmierung.
Ich habe einige Projekte mit OpenCV-Bindings für Java (opencv.org Beamte, nicht JavaCV), wie die Erkennung von Objekten über ORB-und SURF-Funktionen, arbeiten mit Bildern. Alles ok.
Jetzt bin ich bewegt, um die Objekterkennung in video-streams. Ich möchte zu packen-stream von der webcam und anwenden von Objekt-Erkennung.
Ich bin kein Java-guru, also ich fand in OpenCV der Videoergreifung Klasse, aber ich bin nicht in der Lage, um Bilder von der Kamera.

Ich bin mit meinem Projekt in Eclipse mit OpenCV 2.4.4 Bindungen, in OSX Mountain Lion.

Das Ergebnis in der Konsole:

Hello, OpenCV
Camera OK?
Frame Obtained
Captured Frame Width 0
Invalid memory access of location 0x7fae00000000 rip=0x7fff8b4c5263

Code:

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");
    }
}
Versuchen zu codieren Bild an .png.
Das problem ist nicht im Bild-format. Die Konsole sagt Bild-Breite 0 ist. Ändern Bild-format PNG ändert die Letzte Zeile in der Konsole: "libpng warning: Bild-Breite null in IHDR"; "libpng warning: Image height ist null in IHDR"; "libpng error: Invalid IHDR-Daten".
GELÖST. Das problem war einfach, dass die Kamera brauchen Zeit um sich zu initialisieren. Ich habe "Thread.sleep(1000);" nach "Videoergreifung Kamera = neue Videoergreifung(0);".
Da finden Sie Ihre Lösung, poste es als Antwort.
Ich habe ein Total Schwarzes Bild von meiner web-cam ... Web-cam-zeigen Sie es einschalten. Aber prüfen Sie das Bild es ist nichts im Bild Können Sie Helfen?

InformationsquelleAutor Alessandro Gaietta | 2013-04-05

Schreibe einen Kommentar