OpenCV如何更改摄像头分辨率?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV如何更改摄像头分辨率?相关的知识,希望对你有一定的参考价值。
手头有一个USB驱动的摄像头,厂家说出厂默认分辨率为640*480,支持720p.
但是我用OpenCV设置了,大于默认设置的分辨率后图像虽然变大了,但是却未变清晰,只是硬生生的把画面拉大了.不知如何才能设置摄像头的分辨率.
我用的是OpenCV3.0.0-alpha版本
下面是部分代码
VideoCapture Cam(0);//读取摄像头
...
double frame_width = Cam.set(CV_CAP_PROP_FRAME_WIDTH,1280);//设置图像宽度
double frame_height = Cam.set(CV_CAP_PROP_FRAME_HEIGHT,720);//设置图像高度
...
如题,使用opencv 2.4,摄像头获取图像,使用cvsetcaptureproperty调低分辨率,代码如下:
IplImage* pFrame = NULL;
CvCapture* pCapture = NULL;
cvNamedWindow("video", 1);
pCapture = cvCreateCameraCapture(CV_CAP_ANY);
cvSetCaptureProperty(pCapture, CV_CAP_PROP_FRAME_WIDTH, 320);
cvSetCaptureProperty(pCapture, CV_CAP_PROP_FRAME_HEIGHT, 240);//这两句话并没有效果
while(pFrame = cvQueryFrame( pCapture ))
cvShowImage("video", pFrame);
cvWaitKey(20);
参考技术A you need directshow to resize the capture size.
打字不易,如满意,望采纳。追问
请问具体怎么操作呢?不太明白
CameraBridgeViewBase类的方法setMaxFrameSize在OpenCV Java中的作用是什么?
我目前在Android应用程序中使用类CameraBridgeViewBase的setMaxFrameSize
方法来下调我主摄像头的捕获帧。在我的用例中,我需要一个非常低的分辨率,因为需要良好的性能。我想知道这种方法是否只调节输出帧,而不是由不同滤波器改变的内部捕获帧。
所以我的问题是:这个方法是否在捕获后立即占用帧并更改它以便整个处理过程使用更改的帧,或者它只是在显示在显示器上之前改变帧?
你能告诉我在哪里可以找到这个问题的答案,或者你找到它的地方吗?
这是一个最小的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
javaCameraView =(JavaCameraView) findViewById(R.id.java_camera_view);
javaCameraView.setMaxFrameSize(240, 180);
javaCameraView.setVisibility(SurfaceView.VISIBLE);
javaCameraView.enableFpsMeter();
javaCameraView.setCvCameraViewListener(this);
}
setMaxFrameSize()用于从特定于设备的列表中找到最佳预览帧分辨率(由Camera.getSupportedPreviewSizes()返回)。
举个例子 - 我们设置setMaxFrameSize(200,200),我们有176x152和320x240大小。预览框将选择176x152尺寸。
如果您的大小太小,JavaCameraView将尝试setPreviewSize(0,0),并且在大多数设备上它将失败。
以上是关于OpenCV如何更改摄像头分辨率?的主要内容,如果未能解决你的问题,请参考以下文章
机器视觉行业实践技巧 -- OpenCV技巧与方法:避坑指南
机器视觉行业实践技巧 -- OpenCV技巧与方法:代码脚手架 -- 图像处理