2012-04-04 10 views
2

私はついにウェブカメラでJavaCVを使っていましたが、画像の出力形式を変更する方法が見つかりませんでした。JavaCVでウェブカメラのフォーマットを変更するには?

HPノートブックにHP HD(720p)固定ウェブカムがあります。私が得る唯一の解決策は640x480です。私はFrameGrabberの利用可能なすべてのサブクラスを使ってみました。

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(); 
    } 

} 

は、私が何かをしないのですかJavaCVを使用してウェブカメラから画像をキャプチャするための別の方法があります:

私はこの単純なコードを使用していますか?

答えて

4

私はウェブカメラからキャプチャする別の方法を見つけ、また、好ましい幅と高さのようないくつかのプロパティを設定しました。

このコードは、私の作品:

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); 
    } 

} 

が、これは同じ問題を持つ誰かに役立ちます願っています。

+5

'start()'の前に 'grabber.setImageWidth()'と 'setImageHeight()を呼び出すことで、必要な処理を行う必要があります。 –

+0

あなたは正しいです。サミュエル、私は何とかそれを逃したか、 'start()'の後に入れました。 –

+0

@BranislavKulihaそれは私のために働いた。投稿していただきありがとうございます。 – codeDEXTER

関連する問題