鸿蒙开发(NEXT/API 12)【硬件(接入手写套件)】手写功能开发

接入手写套件后,可以在应用中创建手写功能界面。界面包括手写画布和笔刷工具栏两部分,手写画布部分支持手写笔和手指的书写效果绘制,笔刷工具栏部分提供多种笔刷和编辑工具,并支持对手写功能进行设置。接入手写套件后将自动开启一笔成形和报点预测功能,无需再单独接入。

场景介绍

在应用中创建手写功能界面,效果如下:

1

  1. 可以加载和显示手写笔记。
  2. 可以编辑和保存手写笔记。
  3. Pen Kit手写套件仅支持上下滑动,不支持左右滑动。

开发流程

2

接口说明

接口接口描述
[HandwriteComponent]构建手写画布控件
[HandwriteController]手写画布的主要功能入口类

开发步骤

1.导入相关模块。

import { HandwriteComponent, HandwriteController} from '@kit.Penkit';

2.构造包含手写组件的控件/页面,下面以控件为例。

@Entry
@Component
struct HandWritingComponent {
  controller: HandwriteController = new HandwriteController();
  // 根据应用存储规则,获取到手写文件保存的路径,此处仅为实例参考
  initPath : string = "aa";

  aboutToAppear(){
    // 加载时设置保存动作完成后的回调。
    this.controller.onLoad(this.callback);
  }

  // 手写文件内容加载完毕渲染上屏后的回调,通知接入用户,可在此处进行自定义行为
  callback = () => {
    // 自定义行为,例如文件加载完毕后展示用户操作指导
  }

  aboutToDisappear(){
    // HandWriteDemo退出时调用保存接口
    const path : string = `savePath`; // 需根据应用存储规则,获取到手写文件保存的路径,此处仅为实例参考
    this.controller?.save(path);
  }

  build() {
    Row() {
      Column() {
        HandwriteComponent({
          handwriteController: this.controller,
          onInit: () => {
            // 画布初始化完成时的回调。此时可以调用接口加载和显示笔记内容
            this.controller?.load(this.initPath);
          },
          onScale: (scale: number) => {
            // 画布缩放时的回调方法,将返回当前手写控件的缩放比例,可在此处进行自定义行为。
          }
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}
### 推荐的人工智能开发工具 以下是几种值得推荐的人工智能开发工具,这些工具能够帮助开发者更高效地构建和部署AI解决方案: #### AWS Rekognition AWS Rekognition 是一种基于云的服务,它通过机器学习技术提供了图像分析的功能。它可以用于对象检测、场景识别以及人脸识别等功能,适用于需要处理大量图像数据的应用场景[^3]。 ```python import boto3 client = boto3.client('rekognition') response = client.detect_labels( Image={ 'S3Object': { 'Bucket': 'my-bucket', 'Name': 'image.jpg' } }, MaxLabels=10, MinConfidence=75 ) for label in response['Labels']: print(label['Name']) ``` 此代码片段展示了如何使用 AWS SDK 来调用 Rekognition API 并获取图像中的标签信息。 #### TensorFlow TensorFlow 是谷歌开源的一个强大的机器学习框架,支持从研究实验到生产环境的整个过程。它的灵活性使得研究人员可以轻松实现复杂的模型结构,而工程师则可以通过其高效的计算能力快速部署应用[^2]。 ```python import tensorflow as tf mnist = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10) ]) predictions = model(x_train[:1]).numpy() loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True) model.compile(optimizer='adam', loss=loss_fn, metrics=['accuracy']) model.fit(x_train, y_train, epochs=5) ``` 这段 Python 脚本演示了如何创建并训练一个简单的神经网络来分类手写数字。 #### PyTorch PyTorch 另外一款流行的深度学习库,因其动态图机制受到广泛欢迎。相比静态图定义方式,这种特性让调试更加直观简单,并且非常适合于科研用途下的原型设计阶段。 ```python import torch from torchvision import datasets, transforms from torch.utils.data import DataLoader transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))]) trainset = datasets.MNIST('~/.pytorch/MNIST_data/', download=True, train=True, transform=transform) trainloader = DataLoader(trainset, batch_size=64, shuffle=True) dataiter = iter(trainloader) images, labels = dataiter.next() logits = model(images) ps = torch.nn.functional.softmax(logits, dim=1) print(ps.shape) ``` 上述例子说明了怎样加载 MNIST 数据集并通过预训练好的模型预测每张图片所属类别概率分布情况。 #### Alexa Skills Kit (ASK) 对于希望打造语音交互体验的产品经理或者前端设计师来说,亚马逊推出的 Alexa 技能套件无疑是一个不错的选择。借助 ASK 提供的各种资源文档和技术指导手册,即使是没有深厚编程背景的小白用户也能迅速上手制作属于自己的智能家居控制命令或者其他有趣好玩儿的小游戏等等.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值