问题标签 [ios-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.
ios - 如何使用 ARKIt 和视觉框架检测和跟踪足部?
我想虚拟地添加足球并检测和跟踪脚,以便我们可以模拟对球的踢球。
任何人都可以建议在iOS中实现它的方式吗?
swift - 与 iOS11 视觉一起使用时 CAShapeLayer 翻转坐标
我正在使用 iOS 11vision 框架来检测鼻子、眼睛、嘴唇等面部特征。
视觉框架为所有面部特征提供了非常准确的归一化点。现在我试图在贝塞尔路径的帮助下在右眼上画一条红线,下面是我用来绘制相同的代码。
1)addFaceLandmarksToImage()
方法是通过视觉框架仅检测右眼并获取所有归一化点。创建上下文并用于绘制直线。
2)addNewPathToImage()
方法被定义为在检测到的右眼上添加shapelayer,这样我就可以在下一个形状中裁剪它。
现在您可以看到,我可以通过 imageview 上的当前上下文准确地绘制右眼。我已经在我的上下文中应用了 translate 和 scale 属性。
但是我试图在 addNewPathToImage() 的帮助下添加的 shapeLayer 被 翻转了。我知道 UIkit 使用的是ULO(左上原点),而核心图形基于LLO(左下原点)系统。
我需要在此过程中应用什么转换才能将该 shapeLayer 准确地放置在右眼上。
注意:我已经尝试在 shapeLayer 上进行以下转换,但没有成功。
ios - 将 DJI 视频源与 Vision Framework 结合使用
我正在开发一个应用程序,它使用来自 DJI Mavic 2 的视频源并通过机器学习模型运行它来识别对象。
我设法让我的应用程序使用这个示例 DJI 项目预览来自无人机的提要,但是我在尝试将视频数据转换为Vision
框架可用的格式时遇到了很多麻烦。
我使用Apple 的这个示例作为创建我的模型的指南(它正在工作!)但看起来我需要创建一个使用类型创建的VNImageRequestHandler
对象才能使用.cvPixelBuffer
CMSampleBuffer
Vision
知道如何进行这种转换吗?有一个更好的方法吗?
编辑:根据我从 DJI 的(参差不齐的)文档中收集到的信息,看起来视频源是 H264 压缩的。他们声称DJIWidget
包含用于解压的辅助方法,但我没有成功理解如何正确使用它们,因为没有关于它使用的文档。
编辑 2:这是我在 GitHub 上为 DJIWidget 框架创建的问题
编辑 3:使用附加方法更新代码片段,从方法中VideoFrameProcessor
删除旧代码videoFeed
编辑 4:有关如何成功提取像素缓冲区并利用它的详细信息,请参阅GitHub 的此评论
swift - 特征检测期间 iOS Vision API“computeBlinkFunction”中的错误和冻结
我使用 iOS Vision API 在 iPhone X 上从相机传递的缓冲区上实时执行特征检测ARFrame
。它通常工作得很好,但在 iOS 11 和 iOS 12 上,我一直在控制台中看到偶尔出现的错误。无法找到有关的任何信息。此错误连续打印多次,通常与我的应用程序中的严重冻结有关。
有没有人在他们的控制台中看到过这个错误,或者知道是什么原因造成的?任何信息或调试提示将不胜感激。
LandmarkDetector error -20:out of bounds in int vision::mod::LandmarkAttributes::computeBlinkFunction(const vImage_Buffer &, const Geometry2D_rect2D &, const std::vector<Geometry2D_point2D> &, vImage_Buffer &, vImage_Buffer &, std::vector<float> &, std::vector<float> &) @ /BuildRoot/Library/Caches/com.apple.xbs/Sources/Vision/Vision-2.0.62/LandmarkDetector/LandmarkDetector_Attributes.mm:535
更多信息:我认为此错误发生在我的VNDetectFaceLandmarksRequest
. 目前我将 ARKit 归一化后找到的人脸边界框传递到 中inputFaceObservations
,但我以前VNDetectFaceRectangleRequest
在查找人脸边界框时也看到了这些错误。我正在使用 aVNSequenceRequestHandler
在每个ARFrame
摄像头上实时发出这些请求,在后台线程上运行。
swift - VNRecognizeTextRequest 无法识别以横向模式扫描的文本
我正在使用VNDocumentCameraViewController
扫描文档和VNRecognizeTextRequest
检测文本。它仅在以纵向模式扫描文档时有效。它的横向模式失败了。我可以传递方向,VNImageRequestHandler
但纵向扫描会失败。同样,如果我尝试检查扫描的图像方向,它总是.up
. 所以我什至无法操纵图像。有人知道如何解决这个方向问题吗?我正在使用下面的代码。
ios - iOS Vision:VNRecognizedText boundingBox(for:) 方法为任何范围返回相同的边界框
我正在使用 iOS Vision 框架通过VNRecognizeTextRequest
调用执行 OCR,并且我试图在结果VNRecognizedText
观察中找到每个单独的字符。但是,当我boundingBox(for range: Range<String.Index>)
在任何对象上调用该方法时,VNRecognizedText
并且对于已识别文本内的任何有效范围,我都会返回相同的边界框。这个边界框对应于整个字符串的边界框。
我是否误解了该boundingBox(for:)
方法,或者是否有其他方法可以在已识别的文本观察中获取单个字符的离散位置信息?
提前致谢!
编辑:
在进一步研究之后,我意识到单词组和空格之间存在某种联系。考虑具有字符串值“Foo bar”的已识别文本观察。调用boundingBox(for:)
“Foo”中的每个字符返回完全相同的边界框,根据尺寸,该边界框似乎对应于整个子字符串“Foo”,而不是我们传递给boundingBox
方法的范围的单个字符。然后,在另一个奇怪的行为中,boundingBox
空白字符的 for 只是原点处的一个空白区域,其边缘与它两侧的子字符串不对应。最后,第二个子字符串的行为与第一个相同:“bar”中的每个字符都有相同的边界框。
ios - 如何快速从面部地标预测情绪
我可以像这样从VNFaceObservation
这个函数中获取面部地标数据,handleFaceDetectionObservations(observations: [VNFaceObservation])
那么有什么方法可以根据上述地标预测面部情绪(例如微笑、愤怒)?