经过了前几篇文章中的几个步骤,摄像头已经可以用起来了,接着可以发挥自己的想法对采集图像进行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"/>
然后再运行,美观多了,可以自拍了。
未完待续……
网友评论