2013-04-02 138 views
-1

我使用的OpenCV和驗證碼(只有相關的片段)捕獲來自HD凸輪一些圖像數據:獲取最大分辨率)

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

使用這個代碼,我總是得到grabFrame與尺寸爲640x480,而相機支持1920x1080。當我做這樣的事情初始化後:

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

我得到實時高清分辨率效果 - 但模糊的圖像,意味着它只是從640×480縮放爲HD分辨率。所以:我如何強制OpenCV真正使用填充原生分辨率?

它似乎不是一個驅動程序/硬件問題,因爲它發生在Windows和Linux上 - 當我在這些系統上嘗試任何其他應用程序時,我會按預期獲得完整的原始分辨率。

謝謝!

回答

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的。

+0

使用cvSetCaptureProperty()只是一個測試 - 我很樂意獲取默認的視頻大小 - 沒有設置任何屬性。在我的情況下,默認情況下是高清分辨率,一切都會好起來的...... – Elmi

+0

你有沒有檢查你的相機是否在這個列表中? http://opencv.willowgarage.com/wiki/Welcome/OS你可以嘗試更新驅動程序,看看它是否解決了pb。 – Eric

+0

但相機不應該是問題..你可以嘗試這個'cvSetCaptureProperty(data-> capture,CV_CAP_PROP_FRAME_WIDTH,1919);'並報告什麼附加? – Eric

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

兩個不同的Webcam,我已經得到了1900x1080和1280×960幀。