【发布时间】:2012-11-02 08:17:29
【问题描述】:
我的应用在二进制图像上使用 opencv 的 cv::findContours。我现在需要让它成为实时的。 GPUImage 有一个 cannyedge 过滤器,但我找不到与 findContours 相关的任何内容。 GPUImage 是否有任何与 findContours 非常相似的东西?如果没有,有人可以提出替代方案吗? 谢谢
【问题讨论】:
-
目前没有任何东西可以做到这一点。在 GPU 上工作是一个棘手的问题。我最近正在阅读 Sean O'Connell 的关于此技术的论文:ftp.heanet.ie/mirrors/sourceforge/g/gc/gccl/paper_draft.pdf,但即便如此,他也没有看到在 GPU 上确定连接对象的速度有很大提高。作为一个中途措施,您可以先在 GPU 上运行边缘检测,然后从中读出结果以进行 CPU 密集型处理。你至少会从中得到一点加速。
-
我想我会走那条路。将过滤器运行为 cv::Mat 后将原始缓冲区转换的最佳/有效方法是什么?我尝试将其转换为 -> UIImage -> cv::Mat 但这需要很长时间。
-
试试 GPUImageRawDataInput,您应该能够在其中输入原始 RGBA(或 BGRA,我忘了字节顺序)数据,而无需通过 Core Graphics 获取 UIImage。
标签: objective-c image-processing opencv gpuimage