标签: android-vision

使用Google Vision API的媒体记录器

我正在使用Android vision API中的FaceTracker示例.但是,我在录制视频时遇到了困难,同时在它们上面绘制了叠加层.

一种方法是将位图存储为图像并使用FFmpeg或Xuggler将它们合并为视频,但我想知道如果我们可以在预计投影时在运行时录制视频,是否有更好的解决方案.

更新1: 我使用媒体记录器更新了以下类,但录制仍然无法正常工作.当我调用triggerRecording()函数时抛出以下错误:

MediaRecorder:以无效状态调用:4

我在清单文件中有外部存储权限.

更新2:

我在代码中修复了上述问题,并在onSurfaceCreated回调中移动了setupMediaRecorder().但是,当我停止录制时,它会抛出运行时异常.根据文档,如果没有视频/音频数据,将抛出运行时异常.

那么,我在这里错过了什么?

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 now
     */
    private boolean mIsRecordingVideo;

    private Context mContext;
    private SurfaceView mSurfaceView;
    private boolean mStartRequested;
    private boolean mSurfaceAvailable;
    private CameraSource mCameraSource; …
Run Code Online (Sandbox Code Playgroud)

android android-camera android-mediarecorder google-vision android-vision

35
推荐指数
1
解决办法
2523
查看次数

使用Android的Mobile Vision API扫描QR码

我按照本教程学习如何构建可以扫描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>
Run Code Online (Sandbox Code Playgroud)

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" tools:context=".MainActivity">

    <SurfaceView
        android:id="@+id/cameraView"
        android:layout_width="640px"
        android:layout_height="480px"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"/>

    <TextView
        android:id="@+id/infoTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/cameraView"
        android:layout_marginLeft="16dp"
        android:text="Nothing to read"
        android:textSize="20sp"/>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

MainActivity.java

package bitinvent.io.qrscanner;

import …
Run Code Online (Sandbox Code Playgroud)

java android qr-code android-vision

16
推荐指数
2
解决办法
8262
查看次数

Google Mobile Vision Text API示例

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

android text-recognition android-vision

16
推荐指数
1
解决办法
1万
查看次数

未找到Google Vision条形码库

我正在尝试使用Google Play服务(Vision)中的新功能将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.
Run Code Online (Sandbox Code Playgroud)

我按照教程声明了条形码依赖:

<meta-data
    android:name="com.google.android.gms.vision.DEPENDENCIES"
    android:value="barcode" />
Run Code Online (Sandbox Code Playgroud)

我尝试重新安装应用程序并重新启动手机,没有任何帮助.

使用Google Play Services 7.8,设备上安装的版本为7.8.11.

compile 'com.google.android.gms:play-services-vision:7.8.0'
Run Code Online (Sandbox Code Playgroud)

用于创建条形码检测器的代码:

boolean initBarcodeDetector() {
    final BarcodeTrackerFactory barcodeTrackerFactory = new BarcodeTrackerFactory(this);
    final MultiProcessor<Barcode> multiProcessor = new MultiProcessor.Builder<>(barcodeTrackerFactory)
            .build();
    barcodeDetector = new BarcodeDetector.Builder(this)
            .build();
    barcodeDetector.setProcessor(multiProcessor);

    if (barcodeDetector.isOperational() == false) {
        Toast.makeText(this, R.string.barcode_not_operational, Toast.LENGTH_LONG).show();
        finish();
        return false;
    }

    return true;
}
Run Code Online (Sandbox Code Playgroud)

上面的close返回false并barcodeDetector.isOperational()返回活动,因为返回false.

android barcode google-play-services google-vision android-vision

15
推荐指数
3
解决办法
1万
查看次数

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
...
Run Code Online (Sandbox Code Playgroud)

但它没有集中注意力.我如何让它集中注意力?

camera android google-play-services google-vision android-vision

13
推荐指数
3
解决办法
2万
查看次数

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

我觉得这个问题已经解决了很多次,但我无法弄清楚.我基本上遵循了关于移动视觉的这个小教程并完成了它.之后我尝试从ColorBlob开始检测对象并绘制边框.

想法是从框架的中间开始(有目的地将对象保持在相机的中间)并通过其颜色检测该对象的边缘.只要我以横向模式(Frame.ROTATION_0)保持手机,它就可以正常工作.一旦我处于纵向模式(Frame.Rotation_90),边界Rect就会被绘制成旋转,因此具有更多高度的对象将被绘制为具有更多宽度,并且还有点偏离.

文档说,探测器总是提供给COORDS未旋转直立框架,所以我怎么来计算相对于它的旋转边框COORDS?我认为这不重要,但这是我如何找到颜色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 = new Rect();
  float[] hsv = new float[3];
  Bitmap bmp = frame.getBitmap();
  int px = bmp.getPixel(midX, midY);
  Color.colorToHSV(px, hsv);
  Log.d(TAG, "detect: mid hsv: " + hsv[0] …
Run Code Online (Sandbox Code Playgroud)

camera android drawing screen-rotation android-vision

13
推荐指数
0
解决办法
445
查看次数

Vision API中的限制检测区域

我似乎发现自己处于用于条形码扫描的Google Vision API的深层杂草中.在查看各种替代库(ZBar,ZXing,甚至是一些成本较低的第三方实现)之后,我的思绪可能有点油腻,但我在找到任何可以实现某种扫描的地方的信息时遇到了一些困难.区域限制.

用例非常简单:如果我是用户将手机指向一个带有多个相同类型条形码的盒子(想想这里的运输标签),我想明确指出一些小取景器或对齐直边屏幕正好是我想要捕捉的东西,而不必担心在该感兴趣区域之外的任何东西给我一些我不想要的扫描结果.

以上情况在我见过的大多数其他Android库中处理,带有相对或绝对坐标的Rect,这也是iOS的AVCapture元数据结果系统的一部分(它使用相对的CGRect,但实际上是相同的概念).

我已经挖很深成条形码阅读器示例应用程序 在这里,但执行是不透明的,一点点得到什么,但高层次的实现细节了.

在成功检测到相机预览帧内任何位置的条形码时,对于感兴趣区域之外的条形码上的简单无操作,似乎是一个难看的补丁,因为该设备仍在努力计算这些帧.

我错过了一个非常简单明了的东西吗?有什么想法可以干净利落地实施,否则呢?

非常感谢您抽出时间阅读本文!

android google-vision android-vision

12
推荐指数
1
解决办法
7216
查看次数

Machine Vision API是否脱机工作?

Google移动视觉(https://developers.google.com/vision/)API是否脱机工作?还是需要互联网连接?该示例应用程序不需要任何网络权限.这意味着API完全脱机工作.我正在寻找对此的肯定确认.

PS.此外,我正在寻找有关此API的更多信息.例如,它是否使用神经网络?如果是这样,使用了什么算法?我无法在任何地方找到任何细节讨论.

android-vision

12
推荐指数
1
解决办法
5369
查看次数

从视觉api预览条形码扫描仪的大小

我正在使用谷歌Android Vision API的条码阅读器示例.预览大小似乎没有填满整个可用空间(我使用的是Nexus 4,预览右侧有一个未使用的白色空间,约为宽度的1/3).

我希望能够在各种设备上运行此示例,并始终将其填满整个可用空间.

所以我一直在玩的是:

CameraSource.Builder builder = new CameraSource.Builder(getApplicationContext(), barcodeDetector).setFacing(CameraSource.CAMERA_FACING_BACK).setRequestedPreviewSize(?, ?).setRequestedFps(15.0f);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢!

java android google-play-services google-vision android-vision

11
推荐指数
2
解决办法
1万
查看次数

自定义byteArray数据到WebRTC videoTrack

我需要使用WebRTC for android将特定的裁剪(面部)视频发送到videoChannel.我能够操作CameraRession类WebRTC来裁剪面部.现在我将它设置为ImageView. listenForBytebufferFrames()Camera1Session.java

private void listenForBytebufferFrames() {
    this.camera.setPreviewCallbackWithBuffer(new PreviewCallback() {
        public void onPreviewFrame(byte[] data, Camera callbackCamera) {
            Camera1Session.this.checkIsOnCameraThread();
            if(callbackCamera != Camera1Session.this.camera) {
                Logging.e("Camera1Session", "Callback from a different camera. This should never happen.");
            } else if(Camera1Session.this.state != Camera1Session.SessionState.RUNNING) {
                Logging.d("Camera1Session", "Bytebuffer frame captured but camera is no longer running.");
            } else {
                mFrameProcessor.setNextFrame(data, callbackCamera);
                long captureTimeNs = TimeUnit.MILLISECONDS.toNanos(SystemClock.elapsedRealtime());
                if(!Camera1Session.this.firstFrameReported) {
                    int startTimeMs = (int)TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - Camera1Session.this.constructionTimeNs);
                    Camera1Session.camera1StartTimeMsHistogram.addSample(startTimeMs);
                    Camera1Session.this.firstFrameReported = true;
                }

                ByteBuffer byteBuffer1 = ByteBuffer.wrap(data); …
Run Code Online (Sandbox Code Playgroud)

android android-camera webrtc apprtcdemo android-vision

11
推荐指数
1
解决办法
941
查看次数