如题,百度人脸识别离线采集的图片有黑边,有时候采集的背景图黑边区域不是固定的,很让人烦恼,今天想了想,我采集的图片只是用来显示头像区域,采集到的图的中心区域90%是完整的,所以,我们可以在采集到图片后,处理一下。
如图中裁剪区就是我需要的区域,O(∩_∩)O
我用的是人脸闸机的demo,裁剪代码
/**
* 裁剪图片 只适用于Android 因为截图有黑色背景
* 手动设置裁剪区域
*/
private Bitmap cutBitmap(Bitmap bm) {
Bitmap bitmap = null;
if (bm != null) {
bitmap = Bitmap.createBitmap(bm, bm.getWidth()/6, bm.getHeight() /8, bm.getWidth()*2/3, bm.getHeight()*2 / 3);
//对图片的高度的一半进行裁剪
}
return bitmap;
}
我的裁剪区域是手动试出来的,要根据采集时的区域来。这样至少比之前的黑边图好看。
第二个问题,人脸检测是异步的虽然是离线但是还是会有延时,然后Android SDK的demo里并没有处理这个问题,我们可以自己搞定,刚开始我自定义了一个CircleImageView,当检测结果为成功时把图片显示出来,覆盖住人脸检测区域,但是位置不好定位,然后我发现FaceDetectRoundView其实也可以实现的,在检测成功后,把检测成功的
base64ImageMap转换成bitmap传给FaceDetectRoundView,然后画在圆形的区域里,就可以了。