关闭

基于SnapDragonBoard410C的手势识别

标签: android
159人阅读 评论(0) 收藏 举报
分类:

目前在物联网的领域里有许多的交互手段,例如语音交互,手势交互,手柄交互。今天我们就来了解下啥是手势交互!措辞有点糙,请大家见谅。

First:we should download a SDK package from internet.it’s called Touch3D
接下来主要是是向大家介绍这个SDK 是如何集成到我们的应用当中去。

       mCameraEventListener = new CameraEventListener();
        mImageRotationListener = new RotationListener();
        // Create camera wrapper to handle camera functionality
        mCameraWrapper = new CameraWrapper();
        // Create touchless wrapper to handle gesture functionality
        mTouchlessA3DWrapper = new TouchlessA3DWrapper(new TouchlessEventListener());
        // Create helper for managing camera image rotation.
        mImageRotationHelper = new ImageRotationHelper(this);

在oncreat中我们先把mTouchlessA3DWrapper对象先实例化。

 private class TouchlessEventListener implements TouchlessA3DWrapper.TouchlessEventListener {

        @Override
        public void openHandFound() {
            // Dispatch UI updates to UI thread
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    mPoseView.showOpenHand();
                }
            });
        }

        @Override
        public void closedHandFound() {
            // Dispatch UI updates to UI thread
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    mPoseView.showClosedHand();
                }
            });
        }

        @Override
        public void pinchFound() {
            // Dispatch UI updates to UI thread
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    mPoseView.showPinch();
                }
            });
        }

        @Override
        public void thumbsUpFound() {
            // Dispatch UI updates to UI thread
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    mPoseView.showThumbsUp();
                }
            });
        }

        @Override
        public void poseLost() {
            // Dispatch UI updates to UI thread
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    mPoseView.hideHand();
                }
            });
        }

        @Override
        public void onError(final Exception e) {
            Log.e(LOG_TAG, "TouchlessEventListener.onError: ", e);
            // Dispatch event to main queue to update UI
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(TouchlessWorldActivity.this,
                            "Error reported from touchless engine. See logs for more info.",
                            Toast.LENGTH_LONG).show();
                }
            });
        }
    }

PoseView是我们自定的view用于显示手势识别成功后显示相应的图片。
CameraWrapper这个类当中主要是封装我们一些操作Camera的一些方法和数据回调。

 private class ImageAvailableListener implements ImageReader.OnImageAvailableListener {
        @Override
        public void onImageAvailable(ImageReader imageReader) {
            Image image = imageReader.acquireLatestImage();
            if (image != null) {
                int imageWidth = image.getWidth();
                int imageHeight = image.getHeight();

                //Get Y-plane of the YUV_420_888 image.
                Image.Plane yPlane = image.getPlanes()[0];
                //Copy plane to a new byte array, skipping row stride.
                byte[] bytes = copyPlaneDataToPackedByteArray(yPlane, imageWidth, imageHeight);

                //Convert timestamp to milliseconds.
                long timestampMilliseconds = (long)(image.getTimestamp() / 1e6f);
                if(mCameraEventListener != null) {
                    mCameraEventListener.onFrame(bytes, image.getWidth(), image.getHeight(), timestampMilliseconds);//回调数据给Activity!
                }

                // Return image to image reader for reuse.
                image.close();
            }
        }

        private byte[] copyPlaneDataToPackedByteArray(Image.Plane yPlane, int imageWidth, int imageHeight) {
            // Create destination buffer
            byte[] bytes = new byte[imageWidth * imageHeight];

            ByteBuffer buffer = yPlane.getBuffer();
            int strideSkip = yPlane.getRowStride() - imageWidth;

            // For every row of destination image
            for (int row = 0; buffer.hasRemaining(); row += imageWidth) {
                // Copy bytes to destination
                buffer.get(bytes, row, imageWidth);

                // On last row we mus make sure we have room for the stride skip
                if(buffer.hasRemaining()) {
                    // Skip stride
                    buffer.position(buffer.position() + strideSkip);
                }
            }
            return bytes;
        }
    }

TouchlessA3DWrapper这个类主要是封装了一些手势识别的操作!

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

基于视觉手势识别系统的方法总结

一个基于视觉手势识别系统的构成应包括:图像的采集,预处理,特征提取和选择,分类器的设计,以及手势识别。其流程大致如下: 其中有三个步骤是识别系统的关键,分别是预处理时手势的分割,特征提取和选择...
  • lpflying2012
  • lpflying2012
  • 2014-03-31 16:14
  • 4333

基于手势识别的PPT控制

一直想做一个控制PPT的手势识别软件,想送给自己的老师方便以后讲课的时候可以轻松自在的控制PPT,来自由的讲课,摆脱鼠标的困扰。所以出发点就这样出来了。(其实还有进一步的原因,手势控制是将来的一个发展...
  • lpflying2012
  • lpflying2012
  • 2013-11-05 20:16
  • 2000

手势动态识别(基于opencv的简单实现)

http://blog.csdn.net/anqing715/article/details/17653709 手势动态识别(基于opencv的简单实现) ...
  • u013467442
  • u013467442
  • 2014-06-28 14:14
  • 4000

基于SnapDragonBoard410c的视频录制出现分辨率变化的原因

某天搞来一块410c开发板开始录制的时候报我MediaRecorder: start failed错误。 经过一番折腾,才发现是分辨率的问题。 事情是这个样子的: 按正常流程,在录制前,我们需要...
  • u013763766
  • u013763766
  • 2017-12-26 14:38
  • 163

基于SnapDragonBoard410C的机械臂(一)

今天我就基于高通410c的开发板开发的机械臂给大家分享下我们的开发过程。在开发中遇到最大的问题就是我么的智能小车是采用舵机控制的,导致我们往里面写一个值的时候电机一直以这个值做功。所以我们每次进行控制...
  • u013763766
  • u013763766
  • 2017-12-07 16:12
  • 206

基于SnapDragonBoard410c的远程防盗系统 (三)

本次我将继续为大家讲解基于SnapDragonBoard410c的远程防盗系统的整体架构和开发过程中应注意的问题。我们用户在打开APP时 ,可以实时的获取自己家门的情况。本次我将带大家深入了解一下,关...
  • u013763766
  • u013763766
  • 2017-12-06 11:37
  • 164

基于SnapDragonBoard410c的远程防盗系统 (二)

本次我将继续为大家讲解基于SnapDragonBoard410c的远程防盗系统的整体架构和开发过程中应注意的问题。需要的硬件如下:410c开发板一块,超声波模块一个 ,Camera模组一个 ,无线热点...
  • u013763766
  • u013763766
  • 2017-11-21 11:33
  • 208

基于SnapDragonBoard410c的智能小车(一)

今天我就基于高通410c的开发板开发的智能小车给大家分享下我们的开发过程。在开发中遇到最大的问题就是我么的智能小车是采用舵机控制的,导致我们往里面写一个值的时候电机一直以这个值做功。正因为如此,我们便...
  • u013763766
  • u013763766
  • 2017-12-07 15:41
  • 190

FingerGestures手势识别插件

  • 2017-10-18 15:34
  • 47B
  • 下载

复杂背景下基于空间分布特征的手势识别算法_杨波

  • 2015-09-08 20:28
  • 885KB
  • 下载
    个人资料
    • 访问:3112次
    • 积分:228
    • 等级:
    • 排名:千里之外
    • 原创:19篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类