2012-05-23 34 views
1

我想使用下面的代碼設置攝像機參數,它根本不工作。Opencv2.4設置攝像機參數

using namespace cv; 

    int main(int argc,char *argv[]) 
    { 
     VideoCapture cap(0); // open the default camera 
     if(!cap.isOpened()) // check if we succeeded 
      return -1; 
     bool value = cap.set(CV_CAP_PROP_FRAME_WIDTH,10); 
     for(;;) 
     { 
      Mat frame; 
      cap >> frame; // get a new frame from camera 
      imshow("frame", frame); 
      unsigned char *dad = (unsigned char*)frame.data; 
      if(waitKey(30) >= 0) break; 
     } 
     // the camera will be deinitialized automatically in VideoCapture destructor 
     return 0; 
    } 
+0

請解釋「根本不工作」的含義。它是否編譯?它會拋出一個錯誤嗎?我可以想象您的相機和/或驅動程序不支持更改幀寬度參數。 在Linux中,例如無法更改使用V4L的攝像機的參數。 –

+0

另外,如果你想顯示圖像,你應該添加這行'cvNamedWindow(「frame」,CV_WINDOW_AUTOSIZE);'在無盡循環之前的某處。 –

+0

我的意思是我不能改變任何相機參數。 – Andre

回答

-1

上述代碼並未用於更改相機參數。我認爲它足夠用於在您的機器上顯示視頻。可能是這個鏈接對你有用http://opencv.willowgarage.com/wiki/CameraCapture

+0

你錯了,這行 'bool value = cap.set(CV_CAP_PROP_FRAME_WIDTH,10);' 應該改變幀寬度參數。 –

2

OpenCV試圖直接在相機中設置這個大小,所以它不需要調整幀大小。

這種方法的問題是,如果您的相機本身不支持此大小,OpenCV將無法設置該值,讓您在任務檢索後調整幀大小。

cap.set()似乎要返回函數的成功,我建議你檢查一下。

我推薦看看另一個線程:how to change the capture resolution in OpenCV

0

來自opencv正在使用directshow進行視頻捕獲。但是,您的相機僅支持一些分辨率設置,如480 * 320,640 * 480,720p,1080p。如果你設置了別的東西,它根本就不起作用。 如果你想檢查你的相機支持什麼樣的分辨率。 下載graphedt並檢查捕獲引腳屬性。