【问题标题】:Unable to set Vuforia frame format in deployed Version无法在已部署版本中设置 Vuforia 帧格式
【发布时间】:2020-01-26 10:53:36
【问题描述】:

我正在开发一个 AR 应用程序,使用 Vuforia 用于模型目标,Zxing 用于 QR 码扫描。
我已按照 Vuforia 页面上的说明设置项目。虽然我在 Playmode 中一切正常,但是一旦我构建它,尽管构建时没有编译错误,但它无法设置帧格式。

我正在使用:

  • 团结 2018.4.8f1
  • Vuforia 8.3.8
  • .Net 4.7

我尝试了不同的帧格式,授予了统一管理员权限,关闭了病毒扫描程序

        private IEnumerator camInitializing()
        {
            //Wait for vuforia to initialize
            yield return new WaitForSeconds(4);
            if (CameraDevice.Instance == null)
            {
                Debug.LogError("No Instance of Camera could be found");
            }
            Debug.LogError( CameraDevice.Instance.IsActive());

            availableFormat = PIXEL_FORMAT.RGBA8888;
            if (!CameraDevice.Instance.SetFrameFormat(PIXEL_FORMAT.RGBA8888,true))
            {
                availableFormat = PIXEL_FORMAT.RGB888;
                if (!CameraDevice.Instance.SetFrameFormat(PIXEL_FORMAT.RGB888,true))
                {
                    availableFormat = PIXEL_FORMAT.RGB565;
                    if (!CameraDevice.Instance.SetFrameFormat(PIXEL_FORMAT.RGB565, true))
                    {
                        availableFormat = PIXEL_FORMAT.GRAYSCALE;
                        if (!CameraDevice.Instance.SetFrameFormat(PIXEL_FORMAT.GRAYSCALE, true))
                        {
                            availableFormat = PIXEL_FORMAT.UNKNOWN_FORMAT;
                            Debug.LogError("Couldnt Initiate Camera Format");
                        }
                    }
                }
            }

            var isAutoFocus = CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
            if (!isAutoFocus)
            {
                CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_NORMAL);
            }

            Debug.Log("QR Scanner ready");

            _isInitialized = true;
            DecoderThread = new Thread(decode);
            DecoderThread.Name = "T0, _decoder";
            DecoderThread.Start();
            pauseThread = true;

        }

程序应该在几秒钟后启动并初始化帧格式,这样我就可以调用 getCamerImage 来获取要解码的图像。无法设置导致 GetCameraImage 错误的 FrameFormat。在 Visual Studio 中构建解决方案时我发现的两个错误是:

在 0x773DFD82 (KernelBase.dll) 处抛出异常 zXingVuforiaTest.exe:WinRT 发起错误 - 0x80040111: 'Windows.UI.WindowManagement.DisplayRegion'。 onecoreuap\drivers\mobilepc\sensors\convergence\api\winrt\public\internal\viewpositiontrackerinternal.h(94)\Windows.Devices.Sensors.dll!1FE833ED: (调用者:1FE8240F)异常(11)tid(17f0)80040111 ClassFactory kann angeforderte Klasse nicht liefern 在 0x773DFD82 中引发异常 zXingVuforiaTest.exe:Microsoft C++ 异常:wil::ResultException at 内存位置 0x0C53CA78。在 0x773DFD82 处抛出异常 zXingVuforiaTest.exe:Microsoft C++ 异常:[rethrow] 在内存中 位置 0x00000000。 onecoreuap\drivers\mobilepc\sensors\convergence\api\winrt\public\internal\sensor.cpp(179)\Windows.Devices.Sensors.dll!1FE7F4AC: (调用者:1FE7B61C)异常(12)tid(17f0)80070490元素nicht 格芬登。 zXingVuforiaTest.exe 在 0x773DFD82 处抛出异常: Microsoft C++ 异常:内存位置的 wil::ResultException 0x0C53CCC0。 zXingVuforiaTest.exe 在 0x773DFD82 处抛出异常: Microsoft C++ 异常:[rethrow] 在内存位置 0x00000000。 onecoreuap\drivers\mobilepc\sensors\convergence\api\winrt\public\internal\sensorserver.cpp(46)\Windows.Devices.Sensors.dll!1FE78581: (来电者:1FE7593F)ReturnHr(7) tid(17f0) 80070490 元素 nicht 格芬登。线程 0x48a8 以代码 0 (0x0) 退出。例外 在 zXingVuforiaTest.exe 中的 0x773DFD82 (KernelBase.dll) 处抛出:WinRT 起源错误 - 0x80040111: 'Windows.UI.WindowManagement.DisplayRegion'。 onecoreuap\drivers\mobilepc\sensors\convergence\api\winrt\public\internal\viewpositiontrackerinternal.h(94)\Windows.Devices.Sensors.dll!1FE833ED: (调用者:1FE8240F)异常(13)tid(17f0)80040111 ClassFactory kann angeforderte Klasse nicht liefern 在 0x773DFD82 中引发异常 zXingVuforiaTest.exe:Microsoft C++ 异常:wil::ResultException at 内存位置 0x0C53CA48。在 0x773DFD82 处抛出异常 zXingVuforiaTest.exe:Microsoft C++ 异常:[rethrow] 在内存中 位置 0x00000000。 onecoreuap\drivers\mobilepc\sensors\convergence\api\winrt\public\internal\sensor.cpp(179)\Windows.Devices.Sensors.dll!1FE7F4AC: (调用者:1FE7B61C)异常(14)tid(17f0)80070490元素nicht 格芬登。 zXingVuforiaTest.exe 在 0x773DFD82 处抛出异常: Microsoft C++ 异常:内存位置的 wil::ResultException 0x0C53CC90。 zXingVuforiaTest.exe 在 0x773DFD82 处抛出异常: Microsoft C++ 异常:[rethrow] 在内存位置 0x00000000。 onecoreuap\drivers\mobilepc\sensors\convergence\api\winrt\public\internal\sensorserver.cpp(46)\Windows.Devices.Sensors.dll!1FE78581: (来电者:1FE7593F)ReturnHr(8) tid(17f0) 80070490 元素 nicht 格芬登。在 0x773DFD82 (KernelBase.dll) 中引发异常 zXingVuforiaTest.exe:WinRT 发起错误 - 0x80040111: 'Windows.UI.WindowManagement.DisplayRegion'。 onecoreuap\drivers\mobilepc\sensors\convergence\api\winrt\public\internal\viewpositiontrackerinternal.h(94)\Windows.Devices.Sensors.dll!1FE833ED: (调用者:1FE8240F)异常(15)tid(17f0)80040111 ClassFactory kann angeforderte Klasse nicht liefern 在 0x773DFD82 中引发异常 zXingVuforiaTest.exe:Microsoft C++ 异常:wil::ResultException at 内存位置 0x0C53CAB8。在 0x773DFD82 处抛出异常 zXingVuforiaTest.exe:Microsoft C++ 异常:[rethrow] 在内存中 位置 0x00000000。 onecoreuap\drivers\mobilepc\sensors\convergence\api\winrt\public\internal\sensor.cpp(179)\Windows.Devices.Sensors.dll!1FE7F4AC: (调用者:1FE7B61C)异常(16)tid(17f0)80070490元素nicht 格芬登。 zXingVuforiaTest.exe 在 0x773DFD82 处抛出异常: Microsoft C++ 异常:内存位置的 wil::ResultException 0x0C53CD00。 zXingVuforiaTest.exe 在 0x773DFD82 处抛出异常: Microsoft C++ 异常:[rethrow] 在内存位置 0x00000000。 onecoreuap\drivers\mobilepc\sensors\convergence\api\winrt\public\internal\sensorserver.cpp(46)\Windows.Devices.Sensors.dll!1FE78581: (来电者:1FE7593F)ReturnHr(9) tid(17f0) 80070490 元素 nicht 格芬登。设置帧格式失败

并且在某些本地 Vuforia 代码:int32_t returnValue = il2cppPInvokeFunc(____licenseKey0_marshaled 它会停止调试,因为某些访问被拒绝

【问题讨论】:

  • "Ausnahme ausgelöst" 这就是为什么将技术术语翻译成德语是违法的。
  • 是的,在那之后我把语言改成了英语更愉快

标签: c# unity3d qr-code zxing vuforia


【解决方案1】:

通过将RGBLuminanceSource.BitmapFormat 切换为所选PIXEL_FORMAT 的合适格式并用try-catch 块括起来setFrameFormat 来解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 2014-03-25
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多