鸿蒙应用开发之场景化视觉服务AI识图基础
一、工具
 

DevEco Studio
 
二、项目介绍
 
开发步骤
 将AI识图控件相关的类添加。
 import { visionImageAnalyzer } from '@kit.VisionKit';
 import { BusinessError } from '@kit.BasicServicesKit';
 初始化VisionImageAnalyzerController对象。
 private visionImageAnalyzerController: visionImageAnalyzer.VisionImageAnalyzerController = new visionImageAnalyzer.VisionImageAnalyzerController();
 添加订阅事件。
 aboutToAppear(): void {
   this.visionImageAnalyzerController.on('imageAnalyzerVisibilityChange', (visibility: visionImageAnalyzer.ImageAnalyzerVisibility) => {
     console.info("DEMO_TAG", imageAnalyzerVisibilityChange result: ${JSON.stringify(visibility)})
   })
   this.visionImageAnalyzerController.on('textAnalysis', (text: string) => {
     console.info("DEMO_TAG", textAnalysis result: ${JSON.stringify(text)})
   })
   this.visionImageAnalyzerController.on('selectedTextChange', (selectedText: string) => {
     console.info("DEMO_TAG", selectedTextChange result: ${JSON.stringify(selectedText)})
   })
   this.visionImageAnalyzerController.on('subjectAnalysis', (subjects: visionImageAnalyzer.Subject[]) => {
     console.info("DEMO_TAG", subjectAnalysis result: ${JSON.stringify(subjects)})
   })
   this.visionImageAnalyzerController.on('selectedSubjectsChange', (subjects: visionImageAnalyzer.Subject[]) => {
     console.info("DEMO_TAG", selectedSubjectsChange result: ${JSON.stringify(subjects)})
   })
   this.visionImageAnalyzerController.on('analyzerFailed', (error: BusinessError) => {
     console.error("DEMO_TAG", analyzerFailed result: ${JSON.stringify(error)})
   })
 }
 绑定VisionImageAnalyzerController对象,可以控制识图相关的交互。
 build() {
   Stack() {
     // 需要替换您自己的资源图片,存放在resources/base/media目录下
     Image($r('app.media.img'), {
       types: [ImageAnalyzerType.TEXT, ImageAnalyzerType.SUBJECT, ImageAnalyzerType.OBJECT_LOOKUP],
       aiController: this.visionImageAnalyzerController
     })
       .width('100%')
       .height('100%')
       .enableAnalyzer(true)
       .objectFit(ImageFit.Contain)
   }.width('100%').height('100%')
 }
 取消订阅事件。
 aboutToDisappear(): void {
   this.visionImageAnalyzerController.off('imageAnalyzerVisibilityChange')
   this.visionImageAnalyzerController.off('textAnalysis')
   this.visionImageAnalyzerController.off('selectedTextChange')
   this.visionImageAnalyzerController.off('subjectAnalysis')
   this.visionImageAnalyzerController.off('selectedSubjectsChange')
   this.visionImageAnalyzerController.off('analyzerFailed')
 }
 开发实例
 import { visionImageAnalyzer } from '@kit.VisionKit';
 import { BusinessError } from '@kit.BasicServicesKit'
 @Entry
 @Component
 export struct ImageDemo {
   private visionImageAnalyzerController: visionImageAnalyzer.VisionImageAnalyzerController = new visionImageAnalyzer.VisionImageAnalyzerController()
   aboutToAppear(): void {
     this.visionImageAnalyzerController.on('imageAnalyzerVisibilityChange', (visibility: visionImageAnalyzer.ImageAnalyzerVisibility) => {
       console.info("DEMO_TAG", imageAnalyzerVisibilityChange result: ${JSON.stringify(visibility)})
     })
     this.visionImageAnalyzerController.on('textAnalysis', (text: string) => {
       console.info("DEMO_TAG", textAnalysis result: ${JSON.stringify(text)})
     })
     this.visionImageAnalyzerController.on('selectedTextChange', (selectedText: string) => {
       console.info("DEMO_TAG", selectedTextChange result: ${JSON.stringify(selectedText)})
     })
     this.visionImageAnalyzerController.on('selectedSubjectsChange', (subjects: visionImageAnalyzer.Subject[]) => {
       console.info("DEMO_TAG", selectedSubjectsChange result: ${JSON.stringify(subjects)})
     })
     this.visionImageAnalyzerController.on('analyzerFailed', (error: BusinessError) => {
       console.error("DEMO_TAG", analyzerFailed result: ${JSON.stringify(error)})
     })
   }
   build() {
     Stack() {
       Image($r('app.media.img'), {
         types: [ImageAnalyzerType.TEXT, ImageAnalyzerType.SUBJECT, ImageAnalyzerType.OBJECT_LOOKUP],
         aiController: this.visionImageAnalyzerController
       })
         .width('100%')
         .height('100%')
         .enableAnalyzer(true)
         .objectFit(ImageFit.Contain)
     }.width('100%').height('100%')
   }
     aboutToDisappear(): void {
       this.visionImageAnalyzerController.off('imageAnalyzerVisibilityChange')
       this.visionImageAnalyzerController.off('textAnalysis')
       this.visionImageAnalyzerController.off('selectedTextChange')
       this.visionImageAnalyzerController.off('subjectAnalysis')
       this.visionImageAnalyzerController.off('selectedSubjectsChange')
       this.visionImageAnalyzerController.off('analyzerFailed')
     }
 }




















