本人已经实现了安卓下USB摄像头的拍照,预览功能,现在要设置摄像头参数,也已经实现了,但是反映特别慢;
具体做法:
1,将参数值,白平衡,亮度,对比度等写入一个文件中;
2,使用的相关函数struct v4l2_control ctrl 相关函数进行设置;
具体代码如下:int set_camera(unsigned int id,int value)
{
struct v4l2_control ctrl;
int ret=0;
ctrl.id = id;
ctrl.value = value;
ret = ioctl(fd, VIDIOC_S_CTRL, &ctrl);
if(ret == -1)
{
LOGE("set_camera error!\n");
}
LOGE("ctrl.id:\t\t%08x : %d\n",ctrl.id,ctrl.value);
return 0;
}
3. 设置完成后,关闭摄像头,具体做了 停止捕捉,清理缓存区,清理申请的内存;
stopcapturing ();
uninitdevice ();
closedevice ();
//if(rgb) free(rgb);
//if(ybuf) free(ybuf);
if(jpg) free(jpg);
- 为了能达到实时的改变参数之后看到预览效果,于是在安卓的 onResume()函数中重新打开摄像头,可以实现。由于是重新打开了一边摄像头,所以调节起来,界面反映很慢,点击了按钮,过2S左右才调节完毕。这样显然是不行了。 问: 1:怎么优化程序? 2:在调节完之后,不用关闭摄像头,做重新打开操作,只刷新界面,能否实现? 3:window下的一些软件如amcap等,参数调节时候也没那么慢,是怎么样一个工作过程? 希望做过的朋友,给与帮助!谢谢。