【鸿蒙开发】动画

1. 属性动画

animation放在其他属性的后面才有过渡效果

组件的某些通用属性变化时,可以通过属性动画实现渐变过渡效果,提升用户体验。支持的属性包括width、height、backgroundColor、opacity、scale、rotate、translate等。

接口:

animation(value: {duration?: number, tempo?: number, curve?: string | Curve | ICurve, delay?:number, iterations: number, playMode?: PlayMode, onFinish?: () => void})

参数:

名称

参数类型

必填

描述

duration

number

设置动画时长。

默认值:1000

单位:毫秒

从API version 9开始,该接口支持在ArkTS卡片中使用。

说明:

- 在ArkTS卡片上最大动画持续时间为1000毫秒。

- 设置浮点型类型的值时,向下取整;设置值为1.2,按照1处理。

tempo

number

动画播放速度。数值越大,动画播放速度越快,数值越小,播放速度越慢。值为0时,表示不存在动画。

默认值:1

curve

string | Curve | ICurve9+

设置动画曲线。

默认值:Curve.EaseInOut

从API version 9开始,该接口支持在ArkTS卡片中使用。

delay

number

设置动画延迟执行的时长。

默认值:0,不延迟播放。

单位:毫秒

取值范围:[0, +∞)

说明:

设置浮点型类型的值时,向下取整。例如,设置值为1.2,按照1处理。

iterations

number

设置播放次数。

默认值:1

取值范围:[-1, +∞)

说明:

设置为-1时表示无限次播放。设置为0时表示无动画效果。

playMode

PlayMode

设置动画播放模式,默认播放完成后重头开始播放。

默认值:PlayMode.Normal

从API version 9开始,该接口支持在ArkTS卡片中使用。

onFinish

() => void

状态回调,动画播放完成时触发。

从API version 9开始,该接口支持在ArkTS卡片中使用。

说明:

当iterations设置为-1时,动画效果无限循环不会停止,所以不会触发此回调。

示例

@Entry
@Component
struct Index {@State widthSize: number = 100@State heightSize: number = 100@State bgColor: Color = Color.Redbuild() {Column({ space: 15 }) {Row().width(this.widthSize).height(this.heightSize).backgroundColor(this.bgColor).animation({// 动画时长duration: 1000,// 执行次数iterations: 3,// 动画曲线curve: Curve.Ease,// 延时时间delay: 1000,// 播放模式playMode: PlayMode.Normal})Button("实现动画").onClick(() => {this.widthSize = 200this.heightSize = 200this.bgColor = Color.Yellow})}.height('100%').width('100%').justifyContent(FlexAlign.Center)}
}

2. 显式动画

提供全局animateTo显式动画接口来指定由于闭包代码导致的状态变化插入过渡动效。

接口:

animateTo(value: AnimateParam, event: () => void): void

AnimateParam参数:

名称

类型

描述

duration

number

动画持续时间,单位为毫秒。

默认值:1000

从API version 9开始,该接口支持在ArkTS卡片中使用。

说明:

- 在ArkTS卡片上最大动画持续时间为1000毫秒,若超出则固定为1000毫秒。

- 设置浮点型类型的值时,向下取整。例如,设置值为1.2,按照1处理。

tempo

number

动画的播放速度,值越大动画播放越快,值越小播放越慢,为0时无动画效果。

默认值:1.0

curve

Curve | ICurve | string

动画曲线。

默认值:Curve.EaseInOut

从API version 9开始,该接口支持在ArkTS卡片中使用。

delay

number

单位为ms(毫秒),默认不延时播放。

默认值:0

说明:

- 设置浮点型类型的值时,向下取整。例如,设置值为1.2,按照1处理。

iterations

number

默认播放一次,设置为-1时表示无限次播放。

默认值:1

playMode

PlayMode

设置动画播放模式,默认播放完成后重头开始播放。

默认值:PlayMode.Normal

从API version 9开始,该接口支持在ArkTS卡片中使用。

相关使用约束请参考PlayMode说明。

onFinish

() => void

动效播放完成回调。

从API version 9开始,该接口支持在ArkTS卡片中使用。

示例

@Entry
@Component
struct Index {@State widthSize: number = 100@State heightSize: number = 100@State bgColor: Color = Color.Redbuild() {Column({ space: 15 }) {Row().width(this.widthSize).height(this.heightSize).backgroundColor(this.bgColor)Button("实现动画").onClick(() => {animateTo({// 动画时长duration: 1000,// 执行次数iterations: 3,// 动画曲线curve: Curve.Ease,// 延时时间delay: 1000,// 播放模式// 动画执行完成后,不回到起点,从终点再次执行playMode: PlayMode.Alternate}, () => {this.widthSize = 200this.heightSize = 200this.bgColor = Color.Yellow})})}.height('100%').width('100%').justifyContent(FlexAlign.Center)}
}

3. 路径动画

设置组件进行位移动画时的运动路径。

属性

名称

参数

描述

motionPath

{

path: string,

from?: number,

to?: number,

rotatable?: boolean

}

设置组件的运动路径。

- path:位移动画的运动路径,使用svg路径字符串。path中支持使用start和end进行起点和终点的替代,如:'Mstart.x start.y L50 50 Lend.x end.y Z',更多说明请参考绘制路径。

- from:运动路径的起点。

取值范围:[0, 1]

- to:运动路径的终点。

取值范围:[0, 1]

- rotatable:是否跟随路径进行旋转。

 示例

@Entry
@Component
struct Index {@State flag: boolean = truebuild() {Column() {Row().height(100).width(100).backgroundColor(Color.Red)// 移动坐标 一般是页面的2倍  L0 400  (0,200).motionPath({path: 'Mstart.x start.y L0 400 L400 400 Lend.x end.y',from: 0.0,to: 1.0,rotatable: false}).onClick(() => {animateTo({ duration: 3000 }, () => {this.flag = !this.flag})})}.width("100%").height("100%").alignItems(this.flag ? HorizontalAlign.Start : HorizontalAlign.End)}
}

4. 组件内转场动画

组件内转场主要通过transition属性配置转场参数,在组件插入和删除时显示过渡动效,需要配合animateTo才能生效。

属性:

名称

参数类型

参数描述

transition

TransitionOptions

设置组件插入显示和删除隐藏的过渡效果。

默认值:不设置任何过渡效果时,默认有透明度从0到1的过渡效果。若设置了其他过渡效果,以设置的过渡效果为准。

说明:

所有参数均为可选参数,详细描述见TransitionOptions参数说明。

TransitionOptions参数:

参数名称

参数类型

必填

参数描述

type

TransitionType

默认包括组件新增和删除。

默认值:TransitionType.All

说明:

不指定Type时说明插入删除使用同一种效果。

opacity

number

设置组件转场时的透明度效果,为插入时起点和删除时终点的值。

默认值:1

取值范围: [0, 1]

说明:

设置小于0或大于1的非法值时,按1处理。

translate

{

x? : number | string,

y? : number | string,

z? : number | string

}

设置组件转场时的平移效果,为插入时起点和删除时终点的值。

-x:横向的平移距离。

-y:纵向的平移距离。

-z:竖向的平移距离。

scale

{

x? : number,

y? : number,

z? : number,

centerX? : number | string,

centerY? : number | string

}

设置组件转场时的缩放效果,为插入时起点和删除时终点的值。

-x:横向放大倍数(或缩小比例)。

-y:纵向放大倍数(或缩小比例)。

-z:当前为二维显示,该参数无效。

- centerX、centerY指缩放中心点,centerX和centerY默认值是"50%"。

- 中心点为0时,默认的是组件的左上角。

rotate

{

x?: number,

y?: number,

z?: number,

angle: number | string,

centerX?: number | string,

centerY?: number | string

}

设置组件转场时的旋转效果,为插入时起点和删除时终点的值。

-x:横向的旋转向量。

-y:纵向的旋转向量。

-z:竖向的旋转向量。

- centerX,centerY指旋转中心点,centerX和centerY默认值是"50%"。

- 中心点为(0,0)时,默认的是组件的左上角。

示例

组件转场动画
@Entry
@Component
struct Index {@State title: string = "显示"@State flag: boolean = falsebuild() {Column() {Button(this.title).onClick(() => {animateTo({ duration: 2000 }, () => {this.flag = !this.flagif (this.flag) {this.title = '隐藏'} else {this.title = '显示'}})})if (this.flag) {Row().width(200).height(200).backgroundColor(Color.Red).transition({type: TransitionType.Insert,translate: { x: 300, y: 300 }}).transition({type: TransitionType.Delete,scale: { x: 0, y: 0 }})}}.width("100%").height("100%").justifyContent(FlexAlign.Center)}
}
 列表过渡动画
@Entry
@Component
struct Index {@State list: number[] = [1, 2, 3, 4]build() {Stack({ alignContent: Alignment.BottomEnd }) {Column() {List({ space: 3 }) {ForEach(this.list, (item) => {ListItem() {Text(`${item}`).height(60).width("100%").backgroundColor(Color.Pink).textAlign(TextAlign.Center).fontSize(20)}.transition({type: TransitionType.All,translate: { x: 300 }}).onClick(() => {animateTo({ duration: 1000 }, () => {let delIndex = this.list.indexOf(item)this.list.splice(delIndex, 1)})})}, item => item)}}.width("100%").height("100%")Button("增加").margin({ right: 10, bottom: 10 }).onClick(() => {animateTo({ duration: 1000 }, () => {this.list.push(Date.now())})})}.width("100%").height("100%")}
}
弹簧动画曲线 
import curves from '@ohos.curves'@Entry
@Component
struct Index {@State translateX: number = 0build() {Column() {Row().height(200).width(200).backgroundColor(Color.Red).translate({x: this.translateX})Button("弹簧动画曲线").margin({ top: 20 }).onClick(() => {this.translateX = -10 //起始位置animateTo({duration: 1000,// 初始速度(velocity) 质量(mass) 刚度(stiffness) 阻尼(damping)curve: curves.springCurve(10, 1, 1, 1)}, () => {this.translateX = 0})})}.width("100%").height("100%")}
}
 小球飞入购物车
@Entry
@Component
struct Index {@State productList: string[] = ["第一个商品", "第二个商品", "第三个商品", "第四个商品"]@State ScreenPX: number = 0@State ScreenPY: number = 0@State BoxOpacity: number = 0@State flag: boolean = truebuild() {Stack({alignContent: this.flag ? Alignment.TopEnd : Alignment.BottomStart}) {Column() {List({space: 20}) {ForEach(this.productList, (item) => {ListItem() {Row() {Text(item)Button() {Text("+").fontSize(18).fontColor(Color.White)}.width(30).height(30).onClick((e) => {this.ScreenPX = e.screenX - 15this.ScreenPY = e.screenY - 15this.BoxOpacity = 1;animateTo({duration: 500,onFinish: () => {this.flag = truethis.BoxOpacity = 0;}}, () => {this.flag = false;})})}.width('100%').justifyContent(FlexAlign.SpaceBetween)}})}.padding(20).divider({strokeWidth: 1,color: "#eee"})}.width('100%').height('100%')Row() {}.backgroundColor(Color.Red).width(30).height(30).borderRadius(30).opacity(this.BoxOpacity).motionPath({path: `Mstart.x start.y L${this.ScreenPX * 2 - 30} ${this.ScreenPY * 2 + 30}  Lend.x end.y`,from: 0.0,to: 1.0,rotatable: false}).margin({top: this.ScreenPY})}}
}

5. 共享元素转场动画

当路由进行切换时,可以通过设置组件的 sharedTransition 属性将该元素标记为共享元素并设置对应的共享元素转场动效。

5.1 修改 Index.ets

import router from '@ohos.router'@Entry
@Component
struct Index {build() {Row() {Column() {Image("https://img1.baidu.com/it/u=4070670852,624601372&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500").width('100%').aspectRatio(1).sharedTransition('chocolate', {duration: 500,type: SharedTransitionEffectType.Exchange //默认 放大缩小})Text('德国进口薇莉Vivani排块烘焙黑巧克力75%99%100%纯可可脂网红零食').sharedTransition('text', {duration: 1000,type: SharedTransitionEffectType.Static //淡入淡出})}.padding(15).width('50%').onClick(() => {router.pushUrl({url: 'pages/DetailPage'})})}.width('100%')}
}

5.2 修改 DetailPage.ets

import router from '@ohos.router'@Entry
@Component
struct DetailPage {build() {Column() {Column() {Image("https://img1.baidu.com/it/u=4070670852,624601372&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500").width('100%').aspectRatio(1).sharedTransition('chocolate', {duration: 500,type: SharedTransitionEffectType.Exchange //默认})Text('德国进口薇莉Vivani排块烘焙黑巧克力75%99%100%纯可可脂网红零食').fontSize(30).sharedTransition('text', {duration: 1000,type: SharedTransitionEffectType.Static //淡入淡出})}.padding(15).onClick(() => {router.back()})}.height('100%').width('100%')}
}

6. 页面间转场动画

在全局pageTransition方法内配置页面入场和页面退场时的自定义转场动效。

pageTransition

进入此页面或移动到其他页面时实现动画。

pageTransition?(): void

PageTransitionEnter

设置当前页面的自定义入场动效。

PageTransitionEnter(value: PageTransitionOptions)

PageTransitionExit

设置当前页面的自定义退出动效。

PageTransitionExit(value: PageTransitionOptions)

PageTransitionOptions参数:

名称

类型

必填

描述

type

RouteType

页面转场效果生效的路由类型。

默认值:RouteType.None。

duration

number

动画的时长。

单位:毫秒

默认值:1000

curve

Curve | string

动画曲线。string类型的取值支持"ease"、"ease-in"、"ease-out"、"ease-in-out"、"extreme-deceleration"、"fast-out-linear-in"、"fast-out-slow-in"、"friction"、"linear"、"linear-out-slow-in"、"rhythm"、"sharp"、"smooth"。

默认值:Curve.Linear

delay

number

动画延迟时长。

单位:毫秒

默认值:0

说明:

没有匹配时使用系统默认的页面转场效果(根据设备可能会有差异),如需禁用系统默认页面转场效果,可以指定duration为0。

属性

参数名称

参数类型

必填

参数描述

slide

SlideEffect

设置页面转场时的滑入滑出效果。

默认值:SlideEffect.Right

translate

{

x? : number | string,

y? : number | string,

z? : number | string

}

设置页面转场时的平移效果,为入场时起点和退场时终点的值,和slide同时设置时默认生效slide。

- x:横向的平移距离。

- y:纵向的平移距离。

- z:竖向的平移距离。

scale

{

x? : number,

y? : number,

z? : number,

centerX? : number | string,

centerY? : number | string

}

设置页面转场时的缩放效果,为入场时起点和退场时终点的值。

- x:横向放大倍数(或缩小比例)。

- y:纵向放大倍数(或缩小比例)。

- z:竖向放大倍数(或缩小比例)。

- centerX、centerY缩放中心点。

- 中心点为0时,默认的是组件的左上角。

opacity

number

设置入场的起点透明度值或者退场的终点透明度值。

默认值:1

事件

事件

功能描述

onEnter(event: (type?: RouteType, progress?: number) => void)

回调入参为当前入场动画的归一化进度[0 - 1]。

- type:跳转方法。

- progress:当前进度。

触发该事件的条件:

逐帧回调,直到入场动画结束,progress从0变化到1。

onExit(event: (type?: RouteType, progress?: number) => void)

回调入参为当前退场动画的归一化进度[0 - 1]。

- type:跳转方法。

- progress:当前进度。

触发该事件的条件:

逐帧回调,直到退场动画结束,progress从0变化到1。

示例

入场动画为淡入,退场动画为缩小

Index.ets

import router from '@ohos.router'@Entry
@Component
struct Index {@State scale1: number = 1@State opacity1: number = 1build() {Column() {Text("首页")Button("去其他页面").onClick(() => {router.pushUrl({url: "pages/OtherPage"})})}.width('100%').height('100%').scale({ x: this.scale1 }).opacity(this.opacity1)}// 自定义方式1:完全自定义转场过程的效果pageTransition() {PageTransitionEnter({ duration: 1200, curve: Curve.Linear }).onEnter((type: RouteType, progress: number) => {this.scale1 = 1this.opacity1 = progress}) // 进场过程中会逐帧触发onEnter回调,入参为动效的归一化进度(0% -- 100%)PageTransitionExit({ duration: 1500, curve: Curve.Ease }).onExit((type: RouteType, progress: number) => {this.scale1 = 1 - progressthis.opacity1 = 1}) // 退场过程中会逐帧触发onExit回调,入参为动效的归一化进度(0% -- 100%)}
}

OtherPage.ets

import router from '@ohos.router'@Entry
@Component
struct OtherPage {@State scale2: number = 1@State opacity2: number = 1build() {Column() {Text("其他页面")Button("去首页页面").onClick(() => {router.pushUrl({url: "pages/Index"})})}.width('100%').height('100%').scale({ x: this.scale2 }).opacity(this.opacity2)}// 自定义方式1:完全自定义转场过程的效果pageTransition() {PageTransitionEnter({ duration: 1200, curve: Curve.Linear }).onEnter((type: RouteType, progress: number) => {this.scale2 = 1this.opacity2 = progress}) // 进场过程中会逐帧触发onEnter回调,入参为动效的归一化进度(0% -- 100%)PageTransitionExit({ duration: 1500, curve: Curve.Ease }).onExit((type: RouteType, progress: number) => {this.scale2 = 1 - progressthis.opacity2 = 1}) // 退场过程中会逐帧触发onExit回调,入参为动效的归一化进度(0% -- 100%)}
}
入场动画为从左侧滑入,退场为缩小加透明度变化

Index.ets

import router from '@ohos.router'@Entry
@Component
struct Index {@State scale1: number = 1@State opacity1: number = 1build() {Column() {Text("首页")Button("去其他页面").onClick(() => {router.pushUrl({url: "pages/OtherPage"})})}.width('100%').height('100%').scale({ x: this.scale1 }).opacity(this.opacity1)}// 自定义方式2:使用系统提供的多种默认效果(平移、缩放、透明度等)pageTransition() {PageTransitionEnter({ duration: 1200 }).slide(SlideEffect.Left)PageTransitionExit({ delay: 100 }).translate({ x: 100.0, y: 100.0 }).opacity(0)}
}

OtherPage.ets

import router from '@ohos.router'@Entry
@Component
struct OtherPage {@State scale2: number = 1@State opacity2: number = 1build() {Column() {Text("其他页面")Button("去首页页面").onClick(() => {router.pushUrl({url: "pages/Index"})})}.width('100%').height('100%').scale({ x: this.scale2 }).opacity(this.opacity2)}// 自定义方式2:使用系统提供的多种默认效果(平移、缩放、透明度等)pageTransition() {PageTransitionEnter({ duration: 1200 }).slide(SlideEffect.Left)PageTransitionExit({ delay: 100 }).translate({ x: 100.0, y: 100.0 }).opacity(0)}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/822516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4个步骤:如何使用 SwiftSoup 和爬虫代理获取网站视频

摘要/导言 在本文中,我们将探讨如何使用 SwiftSoup 库和爬虫代理技术来获取网站上的视频资源。我们将介绍一种简洁、可靠的方法,以及实现这一目标所需的步骤。 背景/引言 随着互联网的迅速发展,爬虫技术在今天的数字世界中扮演着越来越重要…

Python也可以合并和拆分PDF,批量高效!

PDF是最方便的文档格式,可以在任何设备原样且无损的打开,但因为PDF不可编辑,所以很难去拆分合并。 知乎上也有人问,如何对PDF进行合并和拆分? 看很多回答推荐了各种PDF编辑器或者网站,确实方法比较多。 …

支持向量机模型pytorch

通过5个条件判定一件事情是否会发生,5个条件对这件事情是否发生的影响力不同,计算每个条件对这件事情发生的影响力多大,写一个支持向量机模型pytorch程序,最后打印5个条件分别的影响力。 示例一 支持向量机(SVM)是一种…

【原创】springboot+mysql理发会员管理系统设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

c++中虚函数、纯虚函数以及虚函数的实现原理

c中虚函数、纯虚函数以及虚函数的实现原理 什么是虚函数和纯虚函数 虚函数(Virtual Functions)和纯虚函数(Pure Virtual Functions)是 C 中用于实现多态性的重要概念。 虚函数(Virtual Functions) 虚函…

算法课程笔记——常用库函数

memset初始化 设置成0是可以每个设置为0 而1时会特别大 -1的补码是11111111 要先排序 unique得到的是地址 地址减去得到下标 结果会放到后面 如果这样非相邻 会出错 要先用sort排序 O(n)被O(nlogn)覆盖

服务器数据恢复—xfs文件系统节点、目录项丢失的数据恢复案例

服务器数据恢复环境: EMC某型号存储,该存储内有一组由12块磁盘组建的raid5阵列,划分了两个lun。 服务器故障: 管理员为服务器重装操作系统后,发现服务器的磁盘分区发生改变,原来的sdc3分区丢失。由于该分区…

photoshop基础学习笔记

学习 Photoshop 的基础知识是掌握图像处理和设计的关键。以下是一份基础学习笔记,帮助你开始学习 Photoshop: 1. Photoshop 界面导览 工具栏(Tool Bar):包含了各种工具,如选择工具、画笔工具、橡皮擦工具…

Linux命令学习—DHCP 服务器

1.1、DHCP 服务器 ①、DHCP(dynamic host configure protocol)动态主机配置协议 最大的功能就是向客户端提供 TCP/IP 信息,使用的是 UDP:67 端口 ②、手动设定适合:适用小型网络 ③、手动输入 IP 地址和自动获取比较优缺点 ④…

攻防演练,作为红方的步骤应该是那些

在执行合法的攻防演练中,对目标服务器如 http://XXXXX/ 进行漏洞扫描和评估需要遵循严格的步骤来确保所有活动都是安全、合法且有效的。以下是一些基本步骤和技术指南,以及使用 nmap 进行初始扫描的示例。 1. 获取授权 确保你有明确的书面授权来进行漏…

问,由于java存在性能上,以及部分功能上的缺点,请问如何正确使用C,C++,Go,这三个语言,提升Java Web项目的性能?

拓展阅读:版本任你发,我用java8 我明白Java虽然在许多方面表现出色,但在某些特定场景下可能会遇到性能瓶颈或功能限制。为了提升Java Web项目的性能,可以考虑将C、C和Go这三种语言用于特定的组件或服务。以下是如何正确使用这些语…

葡萄书--深度学习基础

卷积神经网络 卷积神经网络具有的特性: 平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。图像的平移…

设置Linux命令行tab补全不区分大小写

root权限编辑文件 sudo vim /etc/inputrc加入新配置 [按下i键开始输入] 文件末尾加入新配置 set completion-ignore-case on保存 [按下esc键,再输入:wq确定保存] 重启 reboot

web自动化系列-selenium 的鼠标操作(十)

对于鼠标操作 ,我们可以通过click()方法进行点击操作 ,但是有些特殊场景下的操作 ,click()是无法完成的 ,比如 :我想进行鼠标悬停 、想进行鼠标拖拽 ,怎么办 ? 这个时候你用click()是无法完成的…

渲染技术如何改变影视制作的面貌

随着科技的飞速发展,影视制作领域也迎来了翻天覆地的变化。其中,渲染技术的不断革新,更是对影视制作产生了深远的影响。渲染作为影视制作中的关键环节,渲染技术的提升,不仅提升了画面的质量,还为创作者提供…

计算机网络 Cisco远程Telnet访问交换机和Console终端连接交换机

一、实验要求和内容 1、配置交换机进入特权模式密文密码为“abcd两位班内学号”,远程登陆密码为“123456” 2、验证PC0通过远程登陆到交换机上,看是否可以进去特权模式 二、实验步骤 1、将一台还没配置的新交换机,利用console线连接设备的…

Github 2024-04-17 C开源项目日报Top10

根据Github Trendings的统计,今日(2024-04-17统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目10C++项目2Whisper.cpp: 高性能自动语音识别模型的C/C++移植 创建周期:569 天开发语言:C, C++协议类型:MIT LicenseStar数量:30141 个…

Spark大数据常见错误及解决方案-HDFS-费元星

为什么一直鼓励大家做好错误记录,因为人脑的遗忘性是固定的,知识密集型的点,随着时间流逝,都会逐步遗忘掉。 另外鼓励大家对每个知识点都先去源码里搜一下。有几个点非常重要: 1.源码中的错误提示是非常系统的&#x…

OpenCV基本图像处理操作(六)——直方图与模版匹配

直方图 cv2.calcHist(images,channels,mask,histSize,ranges) images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的…

在Visual Studio配置C++的netCDF库的方法

本文介绍在Windows电脑的Visual Studio软件中,配置C 语言最新版netCDF库的方法。 netCDF(Network Common Data Form)是一种用于存储、访问和共享科学数据的文件格式和库,其提供了一种灵活的方式来组织、描述和存储多维数据&#…