-1

OpenCV とこのコードを使用して、HD カメラからいくつかの画像データをキャプチャします (関連するスニペットのみ)。

data->capture =cvCaptureFromCAM(data->config.device); // open the device
...
IplImage *grabFrame=cvQueryFrame(data->capture);

このコードを使用すると、カメラが 1920x1080 をサポートしている間、常に 640x480 のサイズのgrabFrame を取得します。初期化後にそのようなことをすると:

cvSetCaptureProperty(data->capture,CV_CAP_PROP_FRAME_WIDTH,1920);
cvSetCaptureProperty(data->capture,CV_CAP_PROP_FRAME_HEIGHT,1080);

実際の HD 解像度で結果が得られますが、ぼやけた画像は、640x480 から HD 解像度にのみアップスケールされていることを意味します。では、どうすればOpenCVに実際に塗りつぶしのネイティブ解像度を使用させることができますか?

Windows と Linux で発生するため、ドライバー/ハードウェアの問題ではないようです。これらのシステムで他のアプリケーションを試してみると、期待どおりの完全なネイティブ解像度が得られます。

ありがとう!

4

2 に答える 2

0

それは私を助けました:

static const int MAX_WIDTH_RESOLUTION = 7680;
static const int MAX_HEIGHT_RESOLUTION = 4800;

cvCreateCameraCapture(...);
cvSetCaptureProperty(pCam, CV_CAP_PROP_FRAME_WIDTH, MAX_WIDTH_RESOLUTION);
cvSetCaptureProperty(pCam, CV_CAP_PROP_FRAME_HEIGHT, MAX_HEIGHT_RESOLUTION);
cvQueryFrame(...);

2 つの異なる Web カメラを使用すると、1900x1080 と 1280x960 のフレームが得られます。

于 2016-02-11T10:41:21.633 に答える
0

1.(古い)opencv Cドキュメントから:

The function cvSetCaptureProperty() sets the specified property of video capturing.     
Currently the function supports only video files: CV_CAP_PROP_POS_MSEC, CV_CAP_PROP_POS_FRAMES, CV_CAP_PROP_POS_AVI_RATIO.

2.VideoCaptureクラスがキャプチャデバイスオプションの設定に使用するため、openNIでopencvをコンパイルすることができます。

于 2013-04-02T15:46:57.910 に答える