![]() |
1
8
任何在图像中的每一个像素上迭代的操作,除了最快的iOS设备外,都会相当慢。例如,我用一个简单的每像素颜色测试对640x 480视频帧(307200像素)中的每一个像素进行了基准迭代,结果发现在iPhone4上这只会以大约4fps的速度运行。 在你的例子中,你看到的是27648像素的处理速度,在iPhone4上应该可以达到每秒30帧,但这是一个比原来的iPhone3G和iPhone3G快得多的处理器,iPhone3G可能仍然难以承受这样的处理负荷。你也不会说你的Symbian设备的处理器有多快。 我建议修改你的处理算法以避免颜色空间转换。不需要重新排序颜色组件来处理它们。 此外,通过在图像的行和列中以特定间隔进行采样,可以有选择地仅处理几个像素。 最后,如果您的目标是支持OpenGL ES 2.0(iPhone 3G S和更新版本)的较新iOS设备,那么您可能希望看到使用GLSL片段明暗器完全在GPU上处理视频帧。我描述了这个过程 here ,以及用于实时基于颜色的对象跟踪的示例代码。在我的基准测试中,GPU处理这种处理的速度比CPU快14-28倍。 |
![]() |
2
1
免责声明:这个答案是猜测:) 当缓冲区被锁定时,您正在做大量的工作;这是否阻碍了从相机捕获图像的线程? 你可以把数据从缓冲区中复制出来,这样你就可以尽快解锁,比如
如果是锁挡住了抓捕,这应该会有帮助。 注意:如果你知道所有的缓冲区都是相同的大小,你可以只调用malloc一次来获取内存,然后每次都重用它,只有在你处理完所有的缓冲区后才释放它,那么你可以加快速度。 或者如果不是这个问题,你可以尝试降低这个线程的优先级
|
![]() |
3
0
将相机帧的内容复制到一个专用缓冲区中,并从那里对其进行操作。这使我的经验大大提高了速度。我最好的猜测是相机帧所在的内存区域有特殊的保护,使读/写访问变慢。
检查相机帧数据的内存地址。在我的设备上,相机缓冲区在
|
![]() |
joeycato · 为什么我不能将4秒每秒60帧的剪辑缩小到1秒? 7 年前 |
![]() |
Manish Gumbal · 在Swift中合并视频阵列 7 年前 |
![]() |
guyts · 安装了MATLAB图像处理,但imhist不工作 7 年前 |