HarmonyOS 鸿蒙Next 希望对CardRecognition返回的cardImageUri做人证对比

发布于 1周前 作者 vueper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 希望对CardRecognition返回的cardImageUri做人证对比

希望对CardRecognition返回的cardImageUri做人证对比
 希望对CardRecognition返回的cardImageUri与另外一张图片做相似度对比,但在获取cardImageUri后,将其转换成pixelMap时报错: image.createImageSource(cardImageUri) 返回为undefind

报错代码:
import { image } from ‘@kit.ImageKit’;
const source = await image.createImageSource(cardImageUri).createPixelMap();


请问该如何对CardRecognition返回的cardImageUri做人证对比


参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-image-V5#imagecreatepixelmap8
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/vision-card-recognition-V5
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/core-vision-facecomparator-api-V5


更多关于HarmonyOS 鸿蒙Next 希望对CardRecognition返回的cardImageUri做人证对比的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

不支持uri路径直接转换成pixelMap。 这边有一个OCR的结果uri如何转换为 image.PixelMap的demo,

n可以借鉴参考一下:

import { CardRecognition, CallbackParam, CardType, CardSide } from "@kit.VisionKit";

import { image } from '@kit.ImageKit'

import fs from '@ohos.file.fs';

@Entry
@Component
struct Index {
  @State showOCR: boolean = false
  @State src?: image.PixelMap = undefined

  build() {

    Stack() {

      Column() {

        Button('click me')

          .onClick(() => {

            this.showOCR = true

          })

        Image(this.src)

      }

      if (this.showOCR) {

        this.CardOCRPage()

      }

    }

    .width('100%')

    .height('100%')

  }

  @Builder
  CardOCRPage() {

    CardRecognition({

      // 此处选择身份证类型作为示例

      supportType: CardType.CARD_ID,

      cardSide: CardSide.FRONT,

      callback: async (params: CallbackParam) => {

        this.showOCR = false

        if (params.cardInfo) {

          let imageUri = params.cardInfo['front']['cardImageUri'];

          let file = fs.openSync(imageUri, fs.OpenMode.READ_ONLY);

          console.info('file fd:' + file.fd);

          const imageSource: image.ImageSource = image.createImageSource(file.fd);

          let decodingOptions: image.DecodingOptions = {

            editable: true,

            desiredPixelFormat: 3,

          }

          this.src = await imageSource.createPixelMap(decodingOptions);

        }

      }

    })

      .width('100%')

      .height('100%')

  }
}

更多关于HarmonyOS 鸿蒙Next 希望对CardRecognition返回的cardImageUri做人证对比的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,若你希望对CardRecognition返回的cardImageUri进行人脸比对,可以通过以下步骤实现:

  1. 图像获取:首先,利用cardImageUri从存储或媒体库中获取图像数据。这通常涉及使用文件I/O或媒体API来读取URI指向的图像文件。

  2. 人脸检测:接着,使用鸿蒙系统提供的AI能力或第三方人脸检测库,对图像进行人脸检测。这一步会标记出图像中的人脸区域,并提取出人脸特征。

  3. 特征提取:对检测到的人脸区域进行特征提取,生成一个可用于比对的特征向量。

  4. 人脸比对:将提取的特征向量与数据库中已存储的人脸特征向量进行比对。比对算法可以基于余弦相似度、欧氏距离等度量方式,以确定两个特征向量的相似程度。

  5. 结果判定:根据比对结果,判断是否为同一人。通常,会设定一个阈值,当相似度超过该阈值时,认为人脸匹配成功。

请注意,以上步骤涉及的技术细节和API调用可能因鸿蒙系统的具体版本和更新而有所变化。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部