经过了前几篇文章中的几个步骤,摄像头已经可以用起来了,接着可以发挥自己的想法对采集图像进行opencv的后续处理。
接下来我想试着加一个按钮,用来实现相机的切换。有了前置摄像头图像就可以做一些人脸相关的应用了。
cover.jpg
界面添加按钮
首先要切换相机得有个操作按钮,我就先弄个简单的按钮放上去,实现功能以后再做点美化。
找到res/layout下面的activity_main.xml,或者是想要插入按钮的界面的xml文件,插入一个button,这个就是普通的灰色方块按钮,代码如下:
<Button android:id="@+id/btn_swap" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/swap" android:layout_alignParentBottom="true" android:layout_marginBottom="20dp"/>
增加按钮事件监听
有了按钮还得相应按下的动作,然后回到activity的界面,进行下面三个步骤:
1.声明一个变量
在Activity的声明变量部分添加:
//用于切换前后摄像头private int mCameraIndexCount = 0;
2.增加一个函数用于计算摄像头个数
在Activity函数体内添加
private int getCameraCount() { return Camera.getNumberOfCameras(); }
3.增加按钮事件监听
在onCreate()函数体内添加如下代码:
findViewById(R.id.btn_swap).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mOpenCvCameraView.disableView(); mOpenCvCameraView.setCameraIndex(++mCameraIndexCount % getCameraCount()); mOpenCvCameraView.enableView(); });
然后点锤子build,点绿三角在手机上运行,即可以看到看到按钮可以切换相机了。
美化
这个灰色方块矩形的按钮能用但不好看:)要好看还得自己画图
于是我用ps自己画了个40x40的小图,背景透明,格式选png,就这样
swap2.png
把这个小图放进资源文件夹对应的路径,我的是
res.jpg
回到activity_main.xml插入按钮那一段,把Buton替换成ImageButton:
<ImageButton android:id="@+id/btn_swap" android:layout_width="40dp" android:layout_height="40dp" android:background="@mipmap/swap" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" android:layout_marginBottom="20dp"/>
然后再运行,美观多了,可以自拍了。
作者:晚晴风_
链接:https://www.jianshu.com/p/f19f8535e339