问题标签 [apple-vision]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1640 浏览

swift - ARKit 条形码跟踪和视觉框架

我一直在尝试为 ARSession 期间检测到的 QR 码绘制边界框。结果是: boundingbox 1 boundingbox 2

正在跟踪条形码,但边界框的几何形状错误。

如何获得边界框的正确坐标?

源代码是:

0 投票
1 回答
402 浏览

ios - 将图像覆盖到 CGRect swift

我正在使用 Apple 提供的以下示例应用程序来进行一些对象检测。

https://developer.apple.com/documentation/vision/tracking_multiple_objects_or_rectangles_in_video

我正在尝试将一张脸的图像粘贴到视频中绿色矩形的顶部。(视频下载链接:https ://drive.google.com/file/d/1aw5L-6uBMTxeuq378Y98dZcTh6N_Y2Pf/view?usp=sharing )

到目前为止,我能够非常一致地从视频中检测到绿色矩形,但是每当我尝试叠加图像时,帧就不会出现在视图中。

这是我到目前为止所尝试的:

TrackingImageView.swift中,我添加了一个名为的实例变量faceImage,并尝试通过将以下代码添加到draw函数底部来将其添加到屏幕上。

然后TrackingViewController,在名为 的函数中func displayFrame(_ frame: CVPixelBuffer?, withAffineTransform transform: CGAffineTransform, rects: [TrackedPolyRect]?),我添加了以下几行。

更新,这是我尝试的另一种方法:

这是它在文档中所说的:Use the observation’s boundingBox to determine its location, so you can update your app or UI with the tracked object’s new location. Also use it to seed the next round of tracking.

所以在函数func performTracking(type: TrackedObjectType)VisionTrackerProcessor,我添加了这个:

TrackingViewController我添加了这个:

faceImage是:

当我打印出要放置图像的矩形的 CGPoints 时,我得到以下输出:

将图像叠加在我检测到的对象之上的任何帮助都会令人惊叹。谢谢!

0 投票
1 回答
324 浏览

machine-learning - 对象检测 ARKit 与 CoreML

我正在ARKit为 iPhone 构建应用程序。我需要检测特定的香水瓶并根据检测到的内容显示内容。我使用来自 developer.apple.com 的演示应用程序来扫描真实世界的对象并导出.arobject我可以在资产中使用的文件。它工作正常,尽管由于瓶子来自玻璃检测非常差。它仅在 2-30 秒范围内进行扫描或根本不检测的位置进行检测。合并扫描并不能改善情况,这会使情况变得更糟。合并的结果可能有奇怪的方向。

我能做些什么来解决这个问题?

如果没有,会CoreML帮助我吗?我可以拍很多照片和教模型。如果我要检查每一帧是否与这个模型匹配呢?这种方法有机会吗?

0 投票
1 回答
770 浏览

ios - 如何应用 iOS VNImageHomographicAlignmentObservation warpTransform?

我正在测试 Apple 的 Vision Alignment API,并且对 VNHomographicImageRegistrationRequest 有疑问。有没有人让它工作?我可以从中得到 warpTransform,但我还没有看到一个有意义的矩阵,这意味着,我无法获得将图像扭曲回源图像的结果。我正在使用 Opencv warpPerspective 来处理翘曲。

我正在调用它来进行转换:

}

这可以工作并输出一个单应矩阵,但它的结果与我在执行 SIFT + Opencv findHomography 时得到的结果大不相同(https://docs.opencv.org/3.0-beta/doc/tutorials/features2d/feature_homography/feature_homography。 html )

无论我的图像对如何,我都无法从 Apple Vision 数据集中获得合理的单应结果。

提前致谢,

0 投票
0 回答
338 浏览

swift - 使用 CVPixelBuffer 重复调用 Vision 时 iOS 崩溃

我有一个应用程序,它反复告诉一个VNImageRequestHandler对象执行VNDetectFaceRectanglesRequestCVPixelBufferiOS 相机传递给我的一个。

我经常看到来自 Fabric 的崩溃,如下所示:

#0 Crashed: com.apple.main-thread

EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000000

0 CoreVideo

CVPixelBufferGetWidth + 20

在将扩展程序传递给这样的愿景之前,我已经尝试并验证了我CVPixelBuffer是否使用了扩展程序:

我也一次只处理一个CVPixelBuffer(Apple 有一个示例项目,在评论中说这是最佳实践)。

我应该怎么办?我似乎无法摆脱这个错误!我应该锁定CVPixelBuffer的基地址吗?

CVPixelBufferLockBaseAddress(self, CVPixelBufferLockFlags.readOnly)

Apple 说如果使用 GPU 就不要这样做,而且我知道 Vision 在某些情况下会使用 GPU。

有任何想法吗?

0 投票
1 回答
101 浏览

machine-learning - Apple Vision 创建自定义 VNImageBasedRequest

我一直在使用 Apple 的 CoreML 和 Vision API。

我的目标是做一个简单的概念证明,并能够识别手图片上的指甲。这是非常具体的。

我一直在尝试查找有关如何创建自己的 VNRequest 的文档,但我真的不知道如何执行此操作。

我知道 Vision API 只提供矩形、人脸和文本识别……

我如何提出自己的要求来教 Vision 如何识别我想要的图片?

0 投票
1 回答
1978 浏览

swift - ARKit——sceneView 以 120 fps 渲染其内容(但我需要 30 fps)

我正在与Vision/AVKit框架一起开发 ARKit 应用程序。我的应用程序识别用于控制视频的手势(“胜利”、“Okey”、“拳头”手势)。所以我用MLModel我的手势分类。

应用程序工作正常,但视图的内容以120 fps呈现。我不需要这样的帧速率。这对我的应用程序来说太多了,对 CPU 来说是一个沉重的负担。我尝试使用 SceneKit 的实例属性将帧速率降低到30 fps :

但我的帧速率还是一样的——120 fps。

在此处输入图像描述

以下是我的制作方法:

这是Apple对此的评价

SceneKit 根据显示视图的屏幕功能选择尽可能接近您首选帧速率的实际帧速率。实际帧率通常是屏幕最大刷新率的一个因素,以提供一致的帧率。

例如,如果屏幕的最大刷新率为60fps,这也是视图设置为实际帧率的最高帧率。但是,如果您要求较低的帧速率,SceneKit 可能会选择、30或其他一些因素作为实际帧速率。出于这个原因,您需要选择您的应用程序可以始终保持的帧速率。默认值为fps。201560

如何将 View 的帧速率降低到 30 fps

0 投票
1 回答
2594 浏览

swift - 如何显着降低 iOS 应用程序中的能源影响?

我正在开发一个具有 Vision 框架功能(处理 CoreML 模型)的 ARKit 应用程序。

loopCoreMLUpdate()函数生成一个循环,导致非常高的能量影响(CPU=70%,GPU=66%)。

如何处理此任务并将能量影响降低到低水平

这个循环问题的解决方法是什么,可以帮助我减少 CPU/GPU 工作量

这是我的代码:

0 投票
2 回答
641 浏览

swift - CVPixelBuffer – 如何在 60 fps 中捕获每第三帧?

我只需要每秒 60 帧中的 20 帧来处理(CVPixelBuffer)。

如何在 ARKit 会话中捕获每三个 ARFrame?我需要大约 20 fps 的速度进行捕捉(我知道可能会有丢帧)。

这是一个代码片段:

0 投票
2 回答
368 浏览

swift - Xcode 项目中的 Vision 和 ARKit 框架

我想使用 Xcode 创建一个 ARKit 应用程序。我希望它在不按下按钮的情况下识别通用矩形,并且随后该矩形执行特定功能。

怎么做?