鸿蒙应用开发之场景化视觉服务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')
    }
}

posted @ 2025-03-26 16:36  同步—TLNX  阅读(19)  评论(0)    收藏  举报