2012-04-04 14 views
2

Ich habe endlich JavaCV mit meiner Webcam arbeiten, aber ich kann keine Möglichkeit finden, das Ausgabeformat des gegriffenen Bildes zu ändern.Wie kann ich das Webcam-Format in JavaCV ändern?

Ich habe eine HP HD (720p) feste Webcam in meinem HP Notebook. Die einzige Lösung, die ich bekomme, ist 640x480. Ich habe versucht, alle verfügbaren Unterklassen von FrameGrabber zu verwenden.

ich diesen einfachen Code verwende:

import com.googlecode.javacv.CanvasFrame; 
import com.googlecode.javacv.FrameGrabber; 
import com.googlecode.javacv.cpp.opencv_core.IplImage; 

public class Webcam { 

    public static void main(String[] args) throws Exception { 
     FrameGrabber grabber = FrameGrabber.createDefault(0); 
     grabber.start(); 

     IplImage grabbedImage = grabber.grab(); 

     CanvasFrame frame = new CanvasFrame("Some Title", CanvasFrame.getDefaultGamma()/grabber.getGamma()); 

     while (frame.isVisible() && (grabbedImage = grabber.grab()) != null) { 
      frame.showImage(grabbedImage); 
     } 

     frame.dispose(); 
     grabber.stop(); 
    } 

} 

bin ich etwas fehlt oder ist es eine andere Möglichkeit Bild mit JavaCV von einer Webcam zu erfassen?

Antwort

4

Ich fand eine andere Möglichkeit, von der Webcam zu erfassen und auch einige Eigenschaften wie bevorzugte Breite und Höhe einzustellen.

Dieser Code funktioniert für mich:

import com.googlecode.javacv.CanvasFrame; 
import com.googlecode.javacv.cpp.opencv_core.IplImage; 
import com.googlecode.javacv.cpp.opencv_highgui; 
import com.googlecode.javacv.cpp.opencv_highgui.CvCapture; 

public class Webcam { 

    public static void main(String[] args) throws Exception { 
     CvCapture capture = opencv_highgui.cvCreateCameraCapture(0); 

     opencv_highgui.cvSetCaptureProperty(capture, opencv_highgui.CV_CAP_PROP_FRAME_HEIGHT, 720); 
     opencv_highgui.cvSetCaptureProperty(capture, opencv_highgui.CV_CAP_PROP_FRAME_WIDTH, 1280); 

     IplImage grabbedImage = opencv_highgui.cvQueryFrame(capture); 

     CanvasFrame frame = new CanvasFrame("Webcam"); 

     while (frame.isVisible() && (grabbedImage = opencv_highgui.cvQueryFrame(capture)) != null) { 
      frame.showImage(grabbedImage); 
     } 

     frame.dispose(); 
     opencv_highgui.cvReleaseCapture(capture); 
    } 

} 

Hope this jemand mit dem gleichen Problem hilft.

+5

Das Aufrufen von 'grabber.setImageWidth()' und 'setImageHeight()' vor 'start()' sollte auch tun, was Sie brauchen. –

+0

Du hast Recht Samuel, irgendwie habe ich das verpasst oder ich habe es nach 'start()' gesetzt. –

+0

@BranislavKuliha Es hat bei mir funktioniert. Danke für den Beitrag. – codeDEXTER