Android 使用OPENCV实现图像实时对比

本文详述如何使用OpenCV在Android上创建一个应用,实现实时图像对比,适用于AR红包功能。文章包括创建工程、集成OpenCV SDK、配置权限和相机、以及编写图片对比方法。通过CvCameraViewListener2接口监听相机帧,并利用compareHist方法进行直方图对比以计算相似度。
摘要由CSDN通过智能技术生成

原创:转发请注明出处
Demo下载地址:http://download.csdn.net/download/prince_wenzheng/9760658

本文主要介绍使用OpenCV实现相机实时对比图片,得到相似度,可用于实现类似ar红包的功能
首先下载SDK,OpenCV-3.2.0(下载官网:http://opencv.org),点击OpenCV for Android下载,下载完成后解压
SDK中包含很多有趣的demo,可以一并看一下,所以,最好新建一个Eclipse的工作空间

1. 创建demo工程

新建一个Android Application,命名为OpenCVDemo

2. 集成OpenCV SDK

将完整的OpenCV SDK拷贝到工作空间中,将OpenCV_SDK_3.2.0/sdk/java导入到Eclipse中,这个就是我们需要集成的library,将它与我们的demo关联

3. 配置SDK
●因为要用到相机,所以在AndroidManifest.xml添加以下代码

添加权限

<uses-permission android:name="android.permission.CAMERA"/>  
<uses-feature android:name="android.hardware.camera" android:required="false"/>    
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>

在application节点下添加

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
●在MainActivity中继承CvCameraViewListener2接口

CvCameraViewListener2是使用OpenCV相机的核心监听

public class MainActivity extends Activity implements CvCameraViewListener2 {
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    public void onCameraViewStarted(int width, int height) {
        // TODO Auto-generated method stub

    }
    @Override
    public void onCameraViewStopped() {
        // TODO Auto-generated method stub

    }
    @Override
    public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
        // TODO Auto-generated method stub
        return null;
    }
}

onCameraViewStarted:相机启动时调用
onCameraViewStopped:相机销毁时调用
onCameraFrame: 相机工作时调用,参数是相机每一帧的图像,实时对比就在这个方法中进行

●初始化相机

编写布局文件,添加相机控件,相机控件实质是SurfaceView

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.opencvtest.MainActivity" >

    <org.opencv.android.JavaCameraView
        android:id="@+id/cv"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
</RelativeLayout>

在OnCreate中初始化相机,并添加开启相机的回调

    /**
     * CV相机
     */
    private CameraBridgeViewBase mCVCamera;
    /**
     * 加载OpenCV的回调
     */
    private BaseLoaderCallback mLoaderCallback;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值