Android使用OpenCV

读大学时报了一个课程叫《动目标检测》,那时候大受启发,原来摄像头可以这么玩的,通过摄像头捕捉图像,经过图像处理和分析找出运动目标。上了那个课程,简直就是打开了视野,后来做了一些简单的体感游戏,基于两帧相减得出运动的像素,通过运动的像素分析出玩家的肢体运动,从而操控游戏。当时水平有限,还没深入了解光流之类的算法,但已经了解到图像处理的高深莫测,是未来发展的很好的方向。摄像头是机器人的眼睛,开发摄像头的玩法就是在开发机器人的眼睛,赋予机器人超强的视觉能力。

图像处理有各种各样的算法,为了避免开发者重复发明轮子和提高算法运行效率,一般需要用第三方的库,比如OpenCV。OpenCV是一个实现了很多图像处理算法的库,方便我们高效实现图像处理。这个库是开源的库,而且还在不断的更新维护,近几年陆陆续续新增了很多与时俱进的算法包括ML、AR、SLAM。

下面讲述如何在Android平台上面调用OpenCV库。

OpenCV各个平台和版本的下载地址:http://wiki.opencv.org.cn/index.php/Download

解压Android版本的库后,有下面几个文件目录:

LICENSE		
README.android	
apk		
samples		
sdk

Android平台使用OpenCV有多种方式:
1、使用JAVA版本

  • "OpenCV-android-sdk/sdk/java"作为Model导入到AndroidStudio的工程里面,并引用
  • "OpenCV-android-sdk/sdk/native/libs"拷贝到工程目录libs里,可根据需要的平台拷贝,并引用

完成上面两步即可使用OpenCV

测试代码如下(自行添加调用摄像头的权限):

public class MainActivity extends Activity implements CameraBridgeViewBase.CvCameraViewListener2{

    private JavaCameraView cameraView;
    private Mat rgba;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        cameraView = findViewById(R.id.cameraView);
        cameraView.setCvCameraViewListener(this);
    }


    @Override
    public void onCameraViewStarted(int width, int height) {
        rgba = new Mat(width, height, CvType.CV_8UC4);
    }

    @Override
    public void onCameraViewStopped() {
        rgba.release();
    }

    @Override
    public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
        rgba = inputFrame.rgba();
        return rgba;
    }
    @Override
    protected void onResume() {
        super.onResume();
        if (!OpenCVLoader.initDebug()) {
        } else {
            cameraView.enableView();
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (cameraView != null) {
            cameraView.disableView();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (cameraView != null) {
            cameraView.disableView();
        }
    }
}

layout文件加上:

<org.opencv.android.JavaCameraView
       android:id="@+id/cameraView"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintBottom_toBottomOf="parent"
       app:layout_constraintTop_toTopOf="parent"
       app:camera_id="back"
   />

2、使用native版本

#####################################################

附上Mac上配置OpenCv,并使用cmake编译c++项目的教程链接
https://blog.csdn.net/v_xchen_v/article/details/70161673

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DvLee1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值