使用opencv249設置攝像頭分辨率

我使用的opencv版本是249的,因爲感覺使用VideoCapture類來控制攝像頭輸出圖像並且保存比較容易,所以一直使用這個類,但是卻出現一個問題。

在使用這個類的capture.set(CV_CAP_PROP_FRAME_WIDTH,w)和capture.set(CV_CAP_PROP_FRAME_HEIGHT,h)來設置攝像頭分辨率的時候總是

失敗,出的一直是默認的640*480的圖像,沒有辦法設置高清分辨率(在攝像頭支持更高分辨率的情況下)。

最後才知道使用

cvSetCaptureProperty(camera , CV_CAP_PROP_FRAME_WIDTH , 2048);

cvSetCaptureProperty(camera , CV_CAP_PROP_FRAME_HEIGHT , 1536);

這兩個函數來設置分辨率是可以的,但是攝像頭需要使用CvCapture這個結構體來表示。

完整代碼如下

int _tmain(int argc, _TCHAR* argv[])
{
	int id;
	cout <<"Camera ID:";
	cin>>id;
	VideoCapture capture;
	CvCapture *camera = cvCaptureFromCAM(id);
	if(NULL == camera){
		cout <<"打開攝像頭失敗"<<endl;
	}	
	cvSetCaptureProperty(camera , CV_CAP_PROP_FRAME_WIDTH , 2048);
	cvSetCaptureProperty(camera , CV_CAP_PROP_FRAME_HEIGHT , 1536);
	while(1){

		IplImage * img = cvQueryFrame(camera);
		cvSaveImage("C:\\Aratek.jpg",img);
		cvShowImage("aratek",img);
		waitKey(20);
	}
	return 0;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章