Android OpenCV性能低下
在我的申请中:Android OpenCV性能低下,android,c++,opencv,android-ndk,homography,Android,C++,Opencv,Android Ndk,Homography,在我的申请中: 我跟踪一个物体 获取其角在该帧中的位置 我发现上一帧和下一帧的角点之间的单应性 当前帧 使用该单应性在角上执行透视变换 在当前帧中找到,以获取变换的\u角点 使用变换的_角查找它们之间的单应性 和叠加图像 将上面的单应性M应用于overlay\u图像,以获得 使用warpPerspective调用扭曲的图像这是慢镜头 部分 然后使用遮罩操作,我将扭曲的_图像打印到找到对象的当前帧上 现在我看完后知道了为什么透视速度慢了 在上面的第六步中,我得到了每帧约300毫秒的速度,这都是因为
角在该帧中的位置
角点之间的单应性
当前帧
角上执行透视变换
在当前帧中找到,以获取变换的\u角点
变换的_角
查找它们之间的单应性
和叠加图像
M
应用于overlay\u图像
,以获得
使用warpPerspective调用扭曲的图像这是慢镜头
部分扭曲的_图像
打印到找到对象的当前帧上有没有更快的替代方案?这一切都是在Android上完成的,使用NDKR9。有哪些快速的替代方案和优化可以将扭曲时间从300毫秒减少到50毫秒以下?在扭曲透视图中,您选择了哪种插值方法?是否在每次调用中分配新内存?@Mika不传递任何标志值。因此,我假设正在使用默认的
INTER_-LINEAR
。您可以尝试INTER\u NEAREST
,但根据我的经验,它不会快很多。您能提供一些关于输入/输出图像大小等的信息吗?也许需要一些代码来判断是否存在任何可能的优化。我给你的代码片段就是所有相关的。其余部分是空的Mat
s声明,并从这里和那里传递。对于currentFrame
,图像大小从1920x1080到约390x293不等,对于logoImage
。很明显,currentFrame的全高清分辨率太大了。我们尝试了更小的尺寸,960x540和更小的尺寸,但时间仍然在250-350ms左右。您是否从徽标扭曲到currentFrame?与翘曲性能相关的只是目标图像的分辨率。因此,如果您事先知道目标图像中只有一小部分相关,则可以忽略其余部分(例如,向前变换源图像的边界框以在目标图像中找到变换后的边界框)。顺便说一句,你指的是什么snippet
?从算法描述中看不到您是否重复使用分配的扭曲的\u图像
,以及所选的扭曲的\u图像
大小等。。。