使用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;
}




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