Articles of android vision

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

我觉得这个问题已经解决了很多次,但我无法弄清楚。 我基本上遵循了关于移动视觉的这个小教程并完成了它。 之后我尝试从ColorBlob开始检测对象并绘制边框。 想法是从框架的中间开始(有目的地将对象保持在相机的中间)并通过其颜色检测该对象的边缘。 只要我以横向模式(Frame.ROTATION_0)保持手机,它就可以正常工作。 一旦我处于纵向模式(Frame.Rotation_90),边界的Rect就会被绘制为旋转,因此具有更多高度的对象将被绘制为具有更多宽度,并且还有点偏离。 文档说,探测器总是向未旋转的直立框架提供坐标,所以我应该如何计算相对于其旋转的边界矩形坐标? 我不认为这很重要,但这里是我如何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 = […]

Google Vision API示例:让CameraSource成为焦点

我从这里查看了最新的Google Vision API: https://github.com/googlesamples/android-vision 我在带有KitKat的LG G2设备上运行它。 我所做的唯一更改是Gradle文件中的minSdkVerion: … defaultConfig { applicationId “com.google.android.gms.samples.vision.face.multitracker” minSdkVersion 19 … 但它没有集中注意力。 如何让它集中注意力?

未findGoogle Vision条形码库

我正在尝试使用Google Play服务(Vision)中的新function将QR码扫描添加到我的应用程序中。 但当我运行我的应用程序时,我得到了这个: I/Vision﹕ Supported ABIS: [armeabi-v7a, armeabi] D/Vision﹕ Library not found: /data/data/com.google.android.gms/files/com.google.android.gms.vision/barcode/libs/armeabi-v7a/libbarhopper.so I/Vision﹕ Requesting barcode detector download. 我按照教程声明了条形码依赖: 我尝试重新安装应用程序并重新启动手机,没有任何帮助。 使用Google Play Services 7.8,设备上安装的版本为7.8.11。 compile ‘com.google.android.gms:play-services-vision:7.8.0’ 用于创建条形码检测器的代码: boolean initBarcodeDetector() { final BarcodeTrackerFactory barcodeTrackerFactory = new BarcodeTrackerFactory(this); final MultiProcessor multiProcessor = new MultiProcessor.Builder(barcodeTrackerFactory) .build(); barcodeDetector = new BarcodeDetector.Builder(this) .build(); barcodeDetector.setProcessor(multiProcessor); if (barcodeDetector.isOperational() == false) { Toast.makeText(this, […]

使用Android的Mobile Vision API扫描QR码

我按照本教程学习了如何构建可以扫描QR码的Android应用程序。 这是完整的代码。 我使用等级添加了Google Play服务,因此compile ‘com.google.android.gms:play-services:7.8.0’ 。 AndroidManifest.xml中 activity_main.xml中 MainActivity.java package bitinvent.io.qrscanner; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.util.SparseArray; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.widget.TextView; import com.google.android.gms.vision.CameraSource; import com.google.android.gms.vision.Detector; import com.google.android.gms.vision.barcode.Barcode; import com.google.android.gms.vision.barcode.BarcodeDetector; import java.io.IOException; public class MainActivity extends Activity { private SurfaceView cameraView; private TextView barcodeInfo; private CameraSource cameraSource; @Override protected void onCreate(Bundle savedInstanceState) […]

Google Mobile Vision Text API示例

我目前正在编写应该能够查看文本图片的代码,然后从基于Android的设备的图片中提取文本。 我在网上进行了一些研究,发现谷歌提供了自己的名为“Mobile Vision”的API(包含许多项目的包,即文本识别,面部识别等)。 但是,在他们的演示中,他们只展示实时文本识别。 我想知道是否有人可以使用Mobile Vision API给我一个静止图像上的文本识别示例。 欢迎任何帮助。 谢谢。

使用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 […]