-
-
[原创]【FAQ】HarmonyOS SDK 闭源开放能力 —Vision Kit (3)
-
发表于: 2025-5-19 10:22 463
-
1.问题描述:
通过CardRecognition识别身份证拍照拿到的照片地址,使用该方法获取不到图片文件,请问如何解决?
解决方案:
//卡证识别实现页,文件名为CardDemoPage,需被引入至入口页
import { CallbackParam, CardRecognition, CardSide, CardType, ShootingMode } from '@kit.VisionKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { fileIo as fs } from '@kit.CoreFileKit';
import { image } from '@kit.ImageKit';
const TAG: string = 'CardRecognitionPage'
@Component
export struct CardDemoPage {
@State cardDataSource: Record<string, string>[] = []
@Consume('pathStack') pathStack: NavPathStack
@State cardImageUri: string = '';
build() {
NavDestination() {
Stack({ alignContent: Alignment.Top }) {
Stack() {
this.cardDataShowBuilder()
}
.width('80%')
.height('80%')
CardRecognition({
// 此处选择身份证类型作为示例
supportType: CardType.CARD_ID,
cardSide: CardSide.BACK,
cardRecognitionConfig: {
defaultShootingMode: ShootingMode.MANUAL,
isPhotoSelectionSupported: true,
cardContentConfig: { bankCard: { isBankNumberDialogShown: true } }
},
callback: ((params: CallbackParam) => {
hilog.info(0x0001, TAG, params code: ${params.code}
)
if (params.code === -1) {
this.pathStack.pop()
}
hilog.info(0x0001, TAG, params cardType: ${params.cardType}
)
if (params.cardInfo?.front !== undefined) {
this.cardDataSource.push(params.cardInfo?.front)
}
if (params.cardInfo?.back !== undefined) {
this.cardDataSource.push(params.cardInfo?.back)
}
if (params.cardInfo?.main !== undefined) {
this.cardDataSource.push(params.cardInfo?.main)
}
hilog.info(0x0001, TAG, params cardInfo front: ${JSON.stringify(params.cardInfo?.front)}
)
hilog.info(0x0001, TAG, params cardInfo back: ${JSON.stringify(params.cardInfo?.back)}
)
this.cardImageUri = params.cardInfo?.back?.cardImageUri as string
this.getPixelMap()
})
})
}
.width('100%')
.height('100%')
}
.width('100%')
.height('100%')
.hideTitleBar(true)
}
getPixelMap() {
try {
hilog.info(0x0001, TAG, getPixelMap cardImageUri:
+ this.cardImageUri)
let file = fs.openSync(this.cardImageUri, fs.OpenMode.READ_ONLY)
if (!file) {
hilog.info(0x0001, TAG, getPixelMap file:
+ file)
}
hilog.info(0x0001, TAG, "getPixelMap fd: " + file.fd)
const imageSource: image.ImageSource = image.createImageSource(file.fd);
let pixMap = imageSource.createPixelMapSync();
hilog.info(0x0001, TAG, "getPixelMap pixMap: " + pixMap)
} catch (error) {
hilog.error(0x0000, 'testTag', 'getPixelMap failed: %{public}s', JSON.stringify(error));
}
}
@Builder
cardDataShowBuilder() {
List() {
ForEach(this.cardDataSource, (cardData: Record<string, string>) => {
ListItem() {
Column() {
Image(cardData.cardImageUri)
.objectFit(ImageFit.Contain)
.width(100)
.height(100)
Text(JSON.stringify(cardData))
.width('100%')
.fontSize(12)
}
}
})
}
.listDirection(Axis.Vertical)
.alignListItem(ListItemAlign.Center)
.margin({
top: 50
})
.width('100%')
.height('100%')
}
}
2.问题描述:
基于门禁等需要人脸识别的场景,需要录入面部信息,鸿蒙如何实现面部识别功能?
解决方案:
人脸活体检测,参考文档:ed9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6K6N6h3#2W2M7W2)9J5c8X3y4F1i4K6u0r3k6r3!0U0i4K6u0r3K9r3q4J5L8h3!0F1P5h3!0K6i4K6u0V1M7X3g2X3k6i4u0W2L8X3y4W2M7#2)9J5k6q4j5#2i4K6u0r3N6X3W2K6K9h3!0F1i4K6u0V1K9h3&6@1k6i4u0S2j5%4c8A6N6X3g2Q4x3X3c8D9K9i4k6W2L8X3g2K6M7#2)9J5k6q4j5#2i4K6t1K6M7$3g2U0N6r3W2G2L8U0p5H3y4K6t1%4x3e0V1I4y4o6R3@1x3e0p5J5i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1$3i4@1p5K6i4K6R3H3i4@1f1$3i4@1t1#2i4K6S2n7i4@1f1$3i4K6R3^5i4K6V1H3i4@1f1#2i4K6S2m8i4K6W2r3i4@1f1@1i4@1t1&6i4K6S2n7i4@1f1#2i4K6V1H3i4K6S2q4i4@1f1@1i4@1u0o6i4K6W2m8i4@1f1^5i4@1u0r3i4K6V1@1i4@1f1#2i4K6W2n7i4K6W2q4i4@1f1$3i4K6W2o6i4K6R3H3i4@1f1#2i4K6R3#2i4@1t1%4i4@1f1$3i4K6W2o6i4K6R3&6i4@1f1$3i4@1t1@1i4@1u0n7i4@1f1@1i4@1u0p5i4K6V1K6i4@1f1%4i4K6R3&6i4@1t1&6i4@1f1#2i4@1u0q4i4K6R3I4i4@1f1%4i4K6W2m8i4K6R3@1i4@1f1#2i4K6W2n7i4@1u0q4i4@1f1%4i4K6R3&6i4K6R3%4i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1@1i4@1u0p5i4@1u0r3i4@1f1%4i4K6V1@1i4@1p5^5i4@1f1^5i4@1u0r3i4K6V1&6i4@1f1#2i4@1u0o6i4@1p5H3i4@1f1#2i4K6W2n7i4@1u0q4i4@1f1%4i4K6R3&6i4K6R3%4i4@1f1#2i4K6V1H3i4K6S2q4i4@1f1&6i4K6W2p5i4@1p5J5i4@1f1#2i4K6S2r3i4@1q4r3i4@1f1@1i4@1u0n7i4@1p5#2i4@1f1%4i4K6V1@1i4@1p5^5i4@1f1@1i4@1u0m8i4@1u0m8i4@1f1^5i4K6R3@1i4@1t1^5i4@1f1$3i4@1q4r3i4K6V1@1i4@1f1#2i4@1q4r3i4@1t1&6i4@1f1^5i4K6S2q4i4@1t1%4i4@1f1#2i4K6S2r3i4K6V1$3i4@1f1%4i4@1u0n7i4K6V1K6i4@1f1$3i4K6W2q4i4K6W2o6i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1#2i4K6S2r3i4K6R3J5i4@1f1^5i4K6R3H3i4K6R3K6i4@1f1$3i4K6V1$3i4K6R3%4i4@1f1$3i4@1p5I4i4@1p5K6i4@1g2r3i4@1u0o6i4K6W2m8K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6K6N6h3#2W2M7W2)9J5c8X3y4F1i4K6u0r3k6r3!0U0i4K6u0r3K9r3q4J5L8h3!0F1P5h3!0K6i4K6u0V1M7X3g2X3k6i4u0W2L8X3y4W2M7#2)9J5k6q4j5#2i4K6u0r3j5$3!0J5k6g2)9J5k6s2k6A6M7$3W2G2L8W2)9J5k6r3k6S2j5$3g2U0L8$3#2H3j5i4u0S2N6r3!0J5i4K6u0V1j5i4m8A6i4K6u0V1g2U0f1`.
3.问题描述:
升级到Beta5版本,身份证拍摄页面,调用卡证识别控件,身份证正面拍摄可以获取到照片,国徽面获取不到照片,Beta2版本正常,报13900002 No such file or directory 错误
解决方案:
在IDE右下角的Device File Browser进入手机目录结构,看一下图片是否存在。
或者在工程中用 fs.access 判断一下文件是否存在b65K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6K6N6h3#2W2M7W2)9J5c8X3y4F1i4K6u0r3k6r3!0U0i4K6u0r3K9r3q4J5L8h3!0F1P5h3!0K6i4K6u0V1M7X3g2X3k6i4u0W2L8X3y4W2M7#2)9J5k6q4j5#2i4K6u0r3K9Y4y4Q4x3X3c8S2M7r3W2K6i4K6u0V1k6X3W2D9k6g2)9J5k6r3k6K6i4K6u0V1g2U0g2Q4x3U0y4X3M7$3q4U0j5$3g2K6M7H3`.`.
CardSide说明:
FRONT 0 身份证人像面或其他卡证正面。
BACK 1 身份证国徽面或其他卡证反面。
DEFAULT 2 卡证默认面。如身份证为人像面和国徽面,护照为单面。
58eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6K6N6h3#2W2M7W2)9J5c8X3y4F1i4K6u0r3k6r3!0U0i4K6u0r3K9r3q4J5L8h3!0F1P5h3!0K6i4K6u0V1M7X3g2X3k6i4u0W2L8X3y4W2M7#2)9J5k6q4j5#2i4K6u0r3N6X3W2K6K9h3!0F1i4K6u0V1j5$3q4J5k6q4)9J5k6s2u0W2j5$3!0Y4L8X3W2@1K9h3!0F1i4K6u0V1g2U0g2Q4x3U0y4K6k6h3y4@1K9h3!0F1x3e0R3J5x3K6x3^5z5e0x3%4z5b7`.`.
4.问题描述:
活体检测有没有安全性报告?用到交易开户场景是否涉及合规问题?
解决方案:
1-2周内会有CFCA认证报告,合规和安全问题需要伙伴结合自己的使用场景综合评估
</string,></string,>
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课