uni-app 虹软(免费版)人脸识别插件 - 狼人残风0011 是否支持裁剪人脸图到宽高超过480px

发布于 1周前 作者 ionicwang 来自 Uni-App

uni-app 虹软(免费版)人脸识别插件 - 狼人残风0011 是否支持裁剪人脸图到宽高超过480px

插件讨论# 【 虹软(免费版)人脸识别 - 狼人残风0011 】,这个插件人脸图能裁剪到宽高超过480px的图吗?

1 回复

在uni-app中使用虹软(免费版)人脸识别插件进行人脸裁剪,并希望裁剪后的图像宽高超过480px,是可以实现的。但需要注意的是,虹软人脸识别插件本身主要负责人脸检测和识别功能,而图像裁剪通常需要使用Canvas或其他图像处理库来完成。以下是一个结合虹软人脸识别和Canvas裁剪的示例代码。

首先,确保你已经集成了虹软人脸识别插件,并能够在uni-app中调用其API进行人脸检测。

1. 虹软人脸识别检测人脸位置

假设你已经通过虹软插件获取到了人脸框的位置(left, top, width, height),以及原始图像originalImage

// 假设 faceRect 是虹软插件返回的人脸框位置
let faceRect = {
    left: 100,
    top: 150,
    width: 200,
    height: 200
};

// 原始图像路径
let originalImagePath = '/path/to/original/image.jpg';

2. 使用Canvas进行裁剪

接下来,我们使用Canvas来裁剪人脸区域,并调整其大小到超过480px。

uni.getImageInfo({
    src: originalImagePath,
    success: (imageInfo) => {
        let ctx = uni.createCanvasContext('myCanvas');

        // 目标裁剪区域(调整为宽高超过480px,例如640px)
        let targetWidth = 640;
        let targetHeight = (faceRect.height / faceRect.width) * targetWidth; // 保持比例
        let targetLeft = 0;
        let targetTop = 0;

        // 绘制裁剪后的人脸图像到Canvas
        ctx.drawImage(originalImagePath, 
            faceRect.left, faceRect.top, faceRect.width, faceRect.height, 
            targetLeft, targetTop, targetWidth, targetHeight);

        ctx.draw(false, () => {
            // 导出Canvas图像
            uni.canvasToTempFilePath({
                canvasId: 'myCanvas',
                success: (res) => {
                    let croppedImagePath = res.tempFilePath;
                    console.log('Cropped Image Path:', croppedImagePath);
                    // 你可以在这里使用croppedImagePath进行后续操作
                }
            });
        });
    }
});

注意事项

  • 上述代码中的myCanvas是一个Canvas组件的ID,你需要在页面的wxml文件中定义它。
  • uni.getImageInfo用于获取原始图像的尺寸信息,以便正确地在Canvas上绘制。
  • 裁剪后的图像大小(如640px宽)可以根据你的需求进行调整。
  • 确保虹软插件返回的人脸框位置信息是准确的,否则裁剪结果可能不正确。

通过上述方法,你可以在uni-app中实现使用虹软人脸识别插件检测人脸,并使用Canvas进行裁剪,且裁剪后的图像宽高可以超过480px。

回到顶部