Articles of android vision

使用Google Vision API的媒体记录器

我正在使用Android vision API中的FaceTracker示例。 但是,我在录制video时遇到了困难,同时在它们上面绘制了叠加层。 一种方法是将位图存储为图像并使用FFmpeg或Xuggler将它们合并为video,但我想知道如果我们可以在预计投影时在运行时录制video,是否有更好的解决方案。 更新1:我使用媒体记录器更新了以下类,但录制仍然无法正常工作。 当我调用triggerRecording()函数时抛出以下错误: MediaRecorder:以无效状态调用:4 我在清单文件中有外部存储权限。 更新2: 我在代码中修复了上述问题,并在onSurfaceCreated回调中移动了setupMediaRecorder()。 但是,当我停止录制时,它会抛出运行时exception。 根据文档,如果没有video/音频数据,将抛出运行时exception。 那么,我在这里错过了什么? public class CameraSourcePreview extends ViewGroup { private static final String TAG = “CameraSourcePreview”; private static final SparseIntArray ORIENTATIONS = new SparseIntArray(); static { ORIENTATIONS.append(Surface.ROTATION_0, 90); ORIENTATIONS.append(Surface.ROTATION_90, 0); ORIENTATIONS.append(Surface.ROTATION_180, 270); ORIENTATIONS.append(Surface.ROTATION_270, 180); } private MediaRecorder mMediaRecorder; /** * Whether the app is […]

用Barcode Scanner(Vision)编码Data Matrix的未知编码

我试图扫描一些数据matrix条形码与我的视觉条码扫描器的实施,但我在编码的问题。 我在用着: int codesDetected = Barcode.ALL_FORMATS; 但它仍然返回这些的未知编码。 另一方面,Google Goggles应用程序正确扫描它们,对于使用zxing的其他条形码阅读器也是如此。 条码示例: 如果解决了这个问题,我愿意转移到Zxing,但是我想知道在我的实现(我拿了Vision示例应用程序)中是否有这些types的条形码(数据matrix编码)丢失的东西。 谢谢

如何从灰度字节缓冲区图像创build位图?

我正在尝试使用新的Android人脸检测移动视觉API来获取帧image processing。 所以我创build了自定义检测器来获取Frame,并试图调用getBitmap()方法,但是它是null,所以我访问了frame的灰度数据。 有没有办法从它创build位图或类似的图像持有人类? public class CustomFaceDetector extends Detector<Face> { private Detector<Face> mDelegate; public CustomFaceDetector(Detector<Face> delegate) { mDelegate = delegate; } public SparseArray<Face> detect(Frame frame) { ByteBuffer byteBuffer = frame.getGrayscaleImageData(); byte[] bytes = byteBuffer.array(); int w = frame.getMetadata().getWidth(); int h = frame.getMetadata().getHeight(); // Byte array to Bitmap here return mDelegate.detect(frame); } public boolean isOperational() { […]

Android Vision Barcode API – 使用二进制数据读取自定义QR码

我使用com.google.android.gms.vision.barcode.BarcodeDetector读取QR码。 问题是这些代码携带原始的二进制数据; 没有电话号码,没有URL,没有geopoints …我无法更改这些QR码,因为它们是在不同的应用程序中生成的。 当我使用Android Barcode API扫描这些QR码时,所得到的Barcode对象不允许我访问原始数据,但它必须知道它! 我得到的只是rawValue和displayValue属性中的"Unknown encoding"消息。 具有byte[]属性而不是两个String属性会更有意义,因为QR码可以携带一般数据。 我没有看到从开发人员隐藏原始数据字节数组的重点。 我可以以某种方式扩展BarcodeDetector类或Barcode类来获得我所需要的吗? 编辑: 这是一个绝对有效的QR码,它不能被Vision API读取,但它携带了1024个字节的数据: QR码 – 原始的二进制数据是相关的,但它不能解决我的问题。

如何使用TextureView和Camera使用移动视觉API

我正在使用移动视觉API来扫描条形码。 我使用TextureView来渲染相机。 我读了这个Github的线程https://github.com/googlesamples/android-vision/issues/15它似乎移动视觉不兼容TextureView 我发现CameraSource是与SurfaceView不兼容的SurfaceView ,因为在TextureView上没有预览框架的方法。 https://developers.google.com/android/reference/com/google/android/gms/vision/CameraSource.html#start(android.view.SurfaceHolder) 我试图使用下面的方法,并检查receiveDetections没有被调用。 有没有人有任何想法如何将移动视觉API与TextureView和Camera 。 MainActivity.java @RuntimePermissions public class ScanBarcodeActivity extends BaseActivity { private TextureView textureView; private BarcodeDetector barcodeDetector; private Camera camera; private String TAG = LogUtils.makeLogTag(ScanBarcodeActivity.class); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityScanBarcodeBinding activityScanBarcodeBinding = setContentView(this, R.layout.activity_scan_barcode); textureView = activityScanBarcodeBinding.textureView; barcodeDetector = new BarcodeDetector.Builder(this).build(); ScanBarcodeActivityPermissionsDispatcher.requestCameraPermissionWithCheck(this); } @Override public void […]

使用Android的Mobile Vision API扫描QR码

我遵循这个教程如何构build一个可以扫描QR码的Android应用程序。 这是完整的代码。 我添加了Google Play服务,使用compile 'com.google.android.gms:play-services:7.8.0' 。 AndroidManifest.xml中 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="bitinvent.io.qrscanner" > <meta-data android:name="com.google.android.gms.vision.DEPENDENCIES" android:value="barcode"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.CAMERA"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> activity_main.xml中 <?xml version="1.0" encoding="utf-8"?> <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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" […]

如何将框架坐标映射到视觉中的叠加

我觉得这个问题已经解决了很多次了,但是我弄不明白。 我基本上是关于移动视觉这个小教程 ,并完成它。 之后,我尝试从ColorBlob开始并绘制其边框来检测对象。 这个想法是从框架的中间开始(有意识地将物体保持在摄像机的中间),并通过其颜色来检测物体的边缘。 只要手机处于横向模式(Frame.ROTATION_0),它就会工作。 只要我在纵向模式(Frame.Rotation_90)边界Rect被绘制旋转,所以具有更多的高度的对象得到更多的宽度,也有一些closures。 该文件说,一个探测器总是提供坐标到一个未旋转的直立框架,所以我怎么应该计算边界矩形坐标相应的旋转? 我不认为这很重要,但这里是我如何find颜色Rect public Rect getBounds(Frame frame){ int w = frame.getMetadata().getWidth(); int h = frame.getMetadata().getHeight(); int scale = 50; int scaleX = w / scale; int scaleY = h / scale; int midX = w / 2; int midY = h / 2; float ratio = 10.0 Rect mBoundary […]

在Android Vision API中切换到Camera2

我看到,在Android视觉API(示例是在这里: https : //github.com/googlesamples/android-vision )相机(camera1)现在已弃用,build议使用camera2。 你们有什么想法如何重新编写CameraSource在Android视觉上使用camera2? 提前致谢,

媒体logging器与谷歌视觉API

我正在使用Android视觉API的FaceTracker样本。 但是,在叠加画面时,我正在录制video时遇到困难。 一种方法是将位图存储为图像,并使用FFmpeg或Xuggler将它们合并为video,但是我想知道是否有更好的解决scheme,如果我们可以在运行时loggingvideo预览的投影。 更新1:我使用媒体录像机更新了以下课程,但录制内容仍然无法正常工作。 当我调用triggerRecording()函数时抛出以下错误: MediaRecorder:启动时处于无效状态:4 并且在清单文件中有外部存储权限。 更新2: 我已经解决了代码中的上述问题,并在onSurfaceCreatedcallback中移动了setupMediaRecorder()。 但是,当我停止录制时,会引发运行时exception。 根据文档,如果没有video/audio数据运行时exception将被抛出。 那么,我在这里错过了什么? public class CameraSourcePreview extends ViewGroup { private static final String TAG = "CameraSourcePreview"; private static final SparseIntArray ORIENTATIONS = new SparseIntArray(); static { ORIENTATIONS.append(Surface.ROTATION_0, 90); ORIENTATIONS.append(Surface.ROTATION_90, 0); ORIENTATIONS.append(Surface.ROTATION_180, 270); ORIENTATIONS.append(Surface.ROTATION_270, 180); } private MediaRecorder mMediaRecorder; /** * Whether the app is recording video […]