c# - 使用 Hololens 进行图像识别

标签 c# multithreading image-processing camera augmented-reality

目标:我想开发一个使用全息镜头相机识别图像的应用程序。

我的问题的简单方式是“我如何设法做到这一点?” (“太宽泛了?”,请继续阅读。


到目前为止我做了什么(或我拥有什么)

1) 我已经成功开发了一个 Hololens 应用程序,它可以根据命令拍照(手势 - 但语音也可以)并用照片生成全息图。 (所以这个问题不是“我如何使用 Hololens Photocapture 工作”的重复问题)

2) 我已经开发了几种处理形状和字母识别、神经网络、图像处理的工作算法。它们在 C# 和 C++ 中实现(但我可以将它们转换为 C#,因为这是全息镜头使用的语言)(所以这个问题不是“我如何编程 OCR”或“我如何处理图像”并且不是过于宽泛,因为我没有指定我想要什么样的图像识别:我不是在问那个)

3)我读到,当使用 PhotoCapture 时,您可以将图像放入磁盘或内存中,但是当使用 VideoCapture 时,它​​只适用于磁盘(而不是内存)

4) 我已经阅读了异步处理以了解与多线程的区别


我在问什么(更详细)

所以我在想,要实现目标,我必须不断拍照并处理它们。我的假设正确吗?还是有其他办法?

如果是这样,我是否需要将我的图像处理实现到一个单独的线程中? (我想是这样,因为这可能需要一些时间)- 考虑到照片捕获是异步的。

而且还与速度问题直接相关,我是否必须使用不安全的编程重新实现我的算法来处理直接指向图像的指针以提高速度?


以防万一这个问题被标记为“一个问题太多”,让我将问题改写为“我正在考虑通过连续使用 Photocapture 拍照来解决问题,将结果带到图像所在的不同线程taken 将由不安全的指针处理并进行处理以提高速度 - 这是正确的还是其他方式?)

任何意见、指示或有用的建议将不胜感激。

最佳答案

我没有回答你所有的问题,但我认为你不需要在另一个线程中处理你的图像,因为你没有在同一个线程中运行其他进程,我也建议您可以通过诸如 FIFO 列表 (check Queue class here) 之类的方式来完成整个过程,您可以在其中保存未处理的捕获图像,同时您将继续处理队列中第一批未处理的图像。通过这种方式,您可以处理每个图像实例的捕获任务和图像处理任务之间的速度差异,而不会浪费任何捕获的图像,同时您将保持处理结果与捕获照片的顺序相同。

关于c# - 使用 Hololens 进行图像识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46232780/

相关文章:

android - 使用 android 相机创建色键效果的第一步

c# - 在带有 Linq 的 Entity Framework 中使用 LIKE "%{%}%"?

c# - 查询仅在我的应用程序中失败,但在 MySQL 中运行良好

c# - Native Assembly Binding fails for ASP.NET解决方案

multithreading - “reads before reads”在内存排序中是什么意思?

php - 使用 PHP 从 URL 保存图像(保存为 0KB 文件大小)

c# - Razor 语法在编译前在 View 中给出错误(无智能感知)

c - 在多线程应用程序中将日志写入文件

c# - 如何杀死主线程?

python - 在 PIL 中使用 Image.point() 方法来操作像素数据