使用带有视觉识别功能的相机IBM Watson in Unity

时间:2017-09-16 16:57:37

标签: c# unity3d ibm-watson

为了开始我真的很新,我最近使用了vuforia和ar应用程序等等。

现在主要的是, 我想要做的是使用移动应用程序的相机拍摄照片,并在以后用于视觉识别 任何人都可以帮忙解决这个问题。

using UnityEngine;
using System.Collections;
using IBM.Watson.DeveloperCloud.Services.VisualRecognition.v3;
using IBM.Watson.DeveloperCloud.Logging;
using IBM.Watson.DeveloperCloud.Utilities;
using System.Collections.Generic;
public class neww : MonoBehaviour {

// Use this for initialization
void Start () {
    private string _apikey = "<api-key>";
    private string _url = "https://gateway-a.watsonplatform.net/visual-
recognition/api";

    private VisualRecognition _visualRecognition;
    private string _visualRecognitionVersionDate = "2016-05-20";
    private bool _classifyGetTested = false;
    private bool _classifyPostTested = false;
    private string _imageURL = "https://upload.wikimedia.org/wikipedia/commons/e/e9/Official_portrait_of_Barack_Obama.jpg";
    Log.Debug("ExampleVisualRecognition", "Attempting to get classify via URL");
    if (!_visualRecognition.Classify(OnClassifyGet, _imageURL))
        Log.Debug("ExampleVisualRecognition", "Classify image failed!");
}
private void OnClassifyGet(ClassifyTopLevelMultiple classify, string data)
{
    Log.Debug("ExampleVisualRecognition", "VisualRecognition - ClassifyGet Response: {0}", data);
    _classifyGetTested = true;

}

private void OnClassifyPost(ClassifyTopLevelMultiple classify, string data)
{
    Log.Debug("ExampleVisualRecognition", "VisualRecognition - ClassifyPost Response: {0}", data);
    _classifyPostTested = true;
}
// Update is called once per frame
void Update () {

}
}

1 个答案:

答案 0 :(得分:0)

重要提示:您绝不应公开发布服务凭据。请从此处删除您的apikey并从服务中删除凭据。您可以为服务实例创建新凭据。

您应该可以使用WebCamTexture访问设备相机。

https://docs.unity3d.com/ScriptReference/WebCamTexture.html

Classify的重载方法采用bytearray数据。签名看起来像

bool Classify(OnClassify callback, byte[] imageData, string[] owners = default(string[]), string[] classifierIDs = default(string[]), float threshold = default(float), string acceptLanguage = "en", string customData = default(string));

您可以尝试这样的事情(未经测试)

public class ExampleClass : MonoBehaviour {
    public WebCamTexture webcamTexture;
    public Color32[] data;
    private string _apikey = "<api>";
    private string _url = "https://gateway-a.watsonplatform.net/visual-recognition/api";

    private VisualRecognition _visualRecognition;
    private string _visualRecognitionVersionDate = "2016-05-20";

    void Start() 
    {
        //  Instantiate Visual Recognition service
        Credential credential = new Credential(_apikey, _url);
        _visualRecognition = new VisualRecognition();
        _visualRecognition.VersionDate = _visualRecognitionVersionDate;

        //  Init the WebCamTexture and byte data
        webcamTexture = new WebCamTexture();
        webcamTexture.Play();
        data = new Color32[webcamTexture.width * webcamTexture.height];

        //  Send data to service
        if (!_visualRecognition.Classify(OnClassify, data))
            Log.Debug("ExampleVisualRecognition", "Classify image failed!");
    }

    void Update()
    {
        //  Get bytearray data from webcam every frame
        webcamTexture.GetPixels32(data);
    }

    private void OnClassify(ClassifyTopLevelMultiple classify, string data)
    {
        //  Print classify response
        Log.Debug("Webcam example", "response: {0}", data);
    }
}