Expo image-manipulator crop - 根据 facedetector 的值

Posted

技术标签:

【中文标题】Expo image-manipulator crop - 根据 facedetector 的值【英文标题】:Expo image-manipulator crop - according to facedetector values 【发布时间】:2021-03-25 15:04:37 【问题描述】:

简短:如何使用面部检测器坐标和大小进行图像操纵器裁剪?我想从照片中裁剪人脸。

解释;

我使用带有面部检测功能的曝光相机。它工作得很好。人脸检测器给出输出对象

 "origin": Object 
    "x": 85.00000000000006,
    "y": 231.35,   ,   "size": Object 
    "height": 182,
    "width": 173.33333333333331,   , 

我可以在相机预览模式下用该坐标在脸部周围绘制一个框,它适合屏幕尺寸。拍摄图像后,输出图像比相机预览大得多。所以我不能用那个坐标来裁剪图片。我根据图像大小更新了面部检测器坐标和大小。例如,如果图像宽度是屏幕宽度的 2 倍,我将 originx 和宽度乘以 2。但图像操纵器裁剪并没有给我想要的结果。 任何帮助将不胜感激。

【问题讨论】:

我也有同样的问题,你能解决吗? 是的,我解决了。它有点复杂,但仍然很容易。 【参考方案1】:

这是我的解决方案。我取屏幕尺寸和人脸尺寸的百分比。

const growthFactor = 
          w: data.width / width,
          h: data.height / height,
        ;
        const cropDimensions = 
          originX: Math.round(
            growthFactor.w * face.origin.x
          ),
          originY: Math.round(
            growthFactor.h * face.origin.y
          ),
          width: Math.round(
            growthFactor.h * face.size.height
          ),
          height: Math.round(
            growthFactor.h * face.size.height
          ),
        ;

附言。我将高度和宽度都与 growtfactor.h 相乘,因为我需要方形裁剪照片。

【讨论】:

非常感谢!

以上是关于Expo image-manipulator crop - 根据 facedetector 的值的主要内容,如果未能解决你的问题,请参考以下文章

Expo大作战--expo的生命周期,expo社区交流方式,expo学习必备资源,开发使用expo时关注的一些问题

Expo大作战--expo中的App Icon,expo中的Assets,expo中的ErrorHandling错误处理

Expo大作战(二十三)--expo中expo kit 高级属性(没干货)

Expo SDK 需要 Expo 才能运行。似乎本机 Expo 模块不可用,并且此代码未在 Expo 上运行。我想生成apk

Expo大作战(二十七)--expo sdk api之Util(expo自带工具类),tackSnapshotAsync,Svg,SQLite

Expo大作战(十四)--expo中消息推送的实现