android– 移动视觉api– 面部跟踪时如何捕获图片

android– 移动视觉api– 面部跟踪时如何捕获图片,第1张

概述我正在使用Mobilevisionapi的面部跟踪示例,我正试图通过点击屏幕拍照.首先,我想用按钮拍摄屏幕上的任何图片,我尝试了这个代码,但它失败了.我看一下条形码阅读器的例子,并且有tap方法,但我不能成功.我应该用这种情况采用什么方法?pureFaceTrackinggithubcodeprivatevoidta

我正在使用Mobile vision API的面部跟踪示例,我正试图通过点击屏幕拍照.首先,我想用按钮拍摄屏幕上的任何图片,我尝试了这个代码,但它失败了.我看一下条形码阅读器的例子,并且有tap方法,但我不能成功.我应该用这种情况采用什么方法?

pure FaceTracking github code

private voID takeImage() {    camera.takePicture(null, null, new PictureCallback() {        private file imagefile;        @OverrIDe        public voID onPictureTaken(byte[] data, Camera camera) {            try {                // convert byte array into bitmap                Bitmap loadedImage = null;                Bitmap rotatedBitmap = null;                loadedImage = BitmapFactory.decodeByteArray(data, 0,                        data.length);                // rotate Image                Matrix rotateMatrix = new Matrix();                rotateMatrix.postRotate(rotation);                rotatedBitmap = Bitmap.createBitmap(loadedImage, 0, 0,                        loadedImage.getWIDth(), loadedImage.getHeight(),                        rotateMatrix, false);                String state = Environment.getExternalStorageState();                file folder = null;                if (state.contains(Environment.MEDIA_MOUNTED)) {                    folder = new file(Environment                            .getExternalStorageDirectory() + "/Demo");                } else {                    folder = new file(Environment                            .getExternalStorageDirectory() + "/Demo");                }                boolean success = true;                if (!folder.exists()) {                    success = folder.mkdirs();                }                if (success) {                    java.util.Date date = new java.util.Date();                    imagefile = new file(folder.getabsolutePath()                            + file.separator                            + new Timestamp(date.getTime()).toString()                            + "Image.jpg");                    imagefile.createNewfile();                } else {                    Toast.makeText(getBaseContext(), "Image Not saved",                            Toast.LENGTH_SHORT).show();                    return;                }                ByteArrayOutputStream ostream = new ByteArrayOutputStream();                // save image into gallery                rotatedBitmap.compress(CompressFormat.JPEG, 100, ostream);                fileOutputStream fout = new fileOutputStream(imagefile);                fout.write(ostream.toByteArray());                fout.close();                ContentValues values = new ContentValues();                values.put(Images.Media.DATE_TAKEN,                        System.currentTimeMillis());                values.put(Images.Media.MIME_TYPE, "image/jpeg");                values.put(MediaStore.MediaColumns.DATA,                        imagefile.getabsolutePath());                CameraDemoActivity.this.getContentResolver().insert(                        Images.Media.EXTERNAL_CONTENT_URI, values);            } catch (Exception e) {                e.printstacktrace();            }        }    });}@OverrIDepublic voID onClick(VIEw v) {    case R.ID.captureImage:        takeImage();        break;    default:        break;    }}

解决方法:

我解决了这个问题.

findVIEwByID(R.ID.capture).setonClickListener(new VIEw.OnClickListener() {        @OverrIDe        public voID onClick(VIEw v) {            mCameraSource.takePicture(null, new CameraSource.PictureCallback() {                private file imagefile;                @OverrIDe                public voID onPictureTaken(byte[] bytes) {                    try {                        // convert byte array into bitmap                        Bitmap loadedImage = null;                        Bitmap rotatedBitmap = null;                        loadedImage = BitmapFactory.decodeByteArray(bytes, 0,                                bytes.length);                        Matrix rotateMatrix = new Matrix();                        rotateMatrix.postRotate(rotation);                        rotatedBitmap = Bitmap.createBitmap(loadedImage, 0, 0,                                loadedImage.getWIDth(), loadedImage.getHeight(),                                rotateMatrix, false);                        dir = new file(                                Environment.getExternalStoragePublicDirectory(                                        Environment.DIRECTORY_PICTURES), "MyPhotos");                        boolean success = true;                        if (!dir.exists())                        {                            success = dir.mkdirs();                        }                        if (success) {                            java.util.Date date = new java.util.Date();                            imagefile = new file(dir.getabsolutePath()                                    + file.separator                                    + new Timestamp(date.getTime()).toString()                                    + "Image.jpg");                            imagefile.createNewfile();                        } else {                            Toast.makeText(getBaseContext(), "Image Not saved",                                    Toast.LENGTH_SHORT).show();                            return;                        }                        ByteArrayOutputStream ostream = new ByteArrayOutputStream();                        // save image into gallery                        rotatedBitmap.compress(CompressFormat.JPEG, 100, ostream);                        fileOutputStream fout = new fileOutputStream(imagefile);                        fout.write(ostream.toByteArray());                        fout.close();                        ContentValues values = new ContentValues();                        values.put(Images.Media.DATE_TAKEN,                                System.currentTimeMillis());                        values.put(Images.Media.MIME_TYPE, "image/jpeg");                        values.put(MediaStore.MediaColumns.DATA,                                imagefile.getabsolutePath());                        FaceTrackerActivity.this.getContentResolver().insert(                                Images.Media.EXTERNAL_CONTENT_URI, values);                        //savetoInternalStorage(loadedImage);                    } catch (Exception e) {                        e.printstacktrace();                    }                }            });        }    });
总结

以上是内存溢出为你收集整理的android – 移动视觉api – 面部跟踪时如何捕获图片全部内容,希望文章能够帮你解决android – 移动视觉api – 面部跟踪时如何捕获图片所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1108265.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存