简介: 我们的应用程序依赖于面部标志物的高检测速度(=睁眼或闭眼)。因此,我开发了一种算法,该算法从上一帧开始获取人脸的位置,并从下一帧开始裁剪图像。这可以完美工作,并且人脸检测器只需处理四分之一的图像。
但这并不会提高检测速度。有人知道为什么吗?
重要的代码片段:
在将位图传递给人脸检测器之前,将执行此片段。它采用前一帧的脸部位置,并且仅通过图像的这一部分:
Bitmap bitmapReturn = Bitmap.createBitmap(bitmap, topLeftX, topLeftY, width, height);
该片段在人脸检测器处理完帧后执行。它提供下一帧图像的位置:
```js
float spotY = getSpotY(face); float spotX = getRatioX(face); int moveX = (int) (((float)bitMapScanWidth / 2) - spotX) ; int moveY = (int) (((float)bitMapScanHeight / 2) - spotY); moveValues(moveX, moveY);
还有一些其他代码片段可确保图像值,```js
topLeftX
并```
且```js
topLeftY
不```
会达到位图大小以外的值,还有一些代码片段可确保人脸在图像上的大小相同。
但正如之前所说。算法工作正常,但不再导致速度提高。我不知道为什么,因为它可以大大减少所需的计算时间。谁能解释我为什么不是这种情况?我需要调整一些东西吗?还是有另一种方法可以提高算法速度?
请注意,当我比较两个版本之间的速度(使用裁剪图像的算法和不使用裁剪图像的算法)时,两个版本实际上都是通过所需的功能来计算的,以裁剪图像。唯一的区别是,其中一个实际使用值来裁剪图像,而另一个仅在背景中计算了它们。这意味着,我的算法所需的计算并不是速度提高缺失的原因。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。