-
鸿蒙开发长截图功能经验总结一、关键技术难点总结1. 问题说明在鸿蒙应用开发中,截图功能是常见的需求,用户常常需要截取整个页面(比如长网页、聊天记录等),但普通截图只能截取当前屏幕显示的内容,长截图才能满足用户需求,但实现高效的长截图功能面临以下核心挑战:问题1:长内容分页显示问题如何准确计算超出屏幕的长文本高度实现精准的内容分页与翻页控制保持分页内容连续性和完整性问题2:截图功能实现难点获取完整内容区域的组件快照2. 原因分析1. 内容分页计算难点文本内容高度动态变化,受字体大小、行高、设备分辨率等多因素影响需要精确计算单行高度作为分页基准单位页面高度需与行高对齐以保证分页完整性2.截图功能技术限制鸿蒙的componentSnapshotAPI只能捕获当前可见区域3. 解决思路1.动态分页计算实时监测文本区域变化,通过onTextAreaChanged监听文本区域和滚动区域的变化,动态更新布局参数(行高、总高度、每页高度)并计算总页数。基于行高计算分页逻辑,使用@State变量跟踪文本行高、页面高度、总内容高度、当前滚动偏移和页码。 翻页时调整滚动偏移量,并更新当前页码。2.截图处理流程获取内容组件像素快照,异步编码为PNG格式安全存储到系统相册使用componentSnapshot.get获取组件快照(像素映射),然后使用imagePacker将像素映射编码为PNG图片文件,通过photoAccessHelper保存到相册。4. 解决方案1. 动态分页实现核心逻辑代码:// 状态管理 @State lineHeight: number = 0; // 单行文本高度 @State pageHeight: number = 0; // 页面最大高度 @State totalTextHeight: number = 0; // 文本总高度 @State textContent: string = " "; // 文本内容 @State scrollPos: number = 0; // 滚动位置 @State totalPageCount: number = 1; // 总页数 @State currentPageNum: number = 1; // 当前页码 scroller: Scroller = new Scroller(); // 滚动控制器 // 常量定义接口 interface TextConstants { Previous_Page: string; Next_page: string; SAVE: string; SAVE_failure: string; } // 消息常量 const MSG: TextConstants = { Previous_Page: '没有上一页', Next_page: '没有下一页', SAVE: '图片已保存到相册', SAVE_failure: '保存失败,请检查权限!' }; // 判断是否是首次测量行高 isFirstLineMeasurement(newArea: Area): boolean { return this.lineHeight === 0 && newArea.height > 0; } // 初始化行高 initializeLineHeight(newArea: Area) { this.lineHeight = newArea.height as number; this.initTextContent(); } // 初始化文本内容 initTextContent() { this.textContent = this.createTextContent(); } // 生成文本内容 createTextContent() { let content = ""; for (let i = 1; i <= 15; i++) { content += ` ${i}、文本内容文本内容文本内容文本内容文本内容文本内容。`; } return content; } // 处理文本区域变化 onTextAreaChanged(newArea: Area) { if (this.isFirstLineMeasurement(newArea)) { this.initializeLineHeight(newArea); return; } this.updateTotalTextHeight(newArea); } // 计算有效页面高度(确保是行高的整数倍) calculateValidPageHeight(): number { return Math.floor(this.pageHeight / this.lineHeight) * this.lineHeight; } // 总页数 calculateTotalPages(): number { return Math.ceil(this.totalTextHeight / this.pageHeight); } //更新布局 adjustLayoutParams() { if (this.lineHeight > 0 && this.pageHeight > 0 && this.totalTextHeight > 0) { this.pageHeight = this.calculateValidPageHeight(); this.totalPageCount = this.calculateTotalPages(); } } 翻页控制实现// 处理翻页 tabpages(direction: 'shang' | 'xia') { if (this.isBoundaryPage(direction)) { this.showBoundaryToast(direction); return; } this.updatePagePosition(direction); } // 判断是否是边界页 isBoundaryPage(direction: 'shang' | 'xia'): boolean { return (direction === 'shang' && this.currentPageNum === 1) || (direction === 'xia' && this.currentPageNum === this.totalPageCount); } // 显示边界提示 showBoundaryToast(direction: 'shang' | 'xia') { const message = direction === 'shang' ? MSG.Previous_Page : MSG.Next_page; promptAction.showToast({ message }); } // 更新页面位置 updatePagePosition(direction: 'shang' | 'xia') { const scrollStep = direction === 'shang' ? this.pageHeight : -this.pageHeight; this.scrollPos += scrollStep; this.currentPageNum += direction === 'shang' ? -1 : 1; } 2.截图功能实现 // 获取应用上下文 getContext(): common.UIAbilityContext { return getContext(this) as common.UIAbilityContext; } // 处理保存错误 handleSaveError(error: BusinessError) { const err = error as BusinessError; console.error(`保存出错: ${err.code}, ${err.message}`); promptAction.showToast({ message: MSG.SAVE_failure, duration: 2000 }); } // 创建图片资源 async createImageAsset(context: common.UIAbilityContext) { const photoHelper = photoAccessHelper.getPhotoAccessHelper(context); return await photoHelper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg'); } // 打开文件用于写入 async openFileForWriting(uri: string) { return await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); } // 捕获并保存内容 async captureAndSaveContent(file: fs.File) { const pixelMap = await componentSnapshot.get("textContentArea"); const packOpts: image.PackingOption = { format: 'image/png', quality: 100 }; const imgPacker = image.createImagePacker(); await imgPacker.packToFile(pixelMap, file.fd, packOpts); this.cleanupResources(imgPacker, file); promptAction.showToast({ message: MSG.SAVE, duration: 2000 }); } 3.性能优化策略1.精确区域约束Scroll(this.scroller) { //文本内容Text } .scrollBar(BarState.Off) .constraintSize({ maxHeight: this.pageHeight || 1000 }) //约束区域 2.资源管理(释放)// 清理资源 cleanupResources(packer: image.ImagePacker, file: fs.File) { packer.release(); fs.close(file.fd); } 5. 成果总结1.自适应内容分割技术:开发出基于行高的分页算法,精准识别文本段落边界。突破传统截图工具内容截断问题,确保每页内容完整性达100%。2.实时渲染优化系统:完成长截图功能实现,内存占用降低70%实现毫秒级内容重排响应,测试数据显示在100页文档中翻页响应时间<50ms
-
我们在通过数字平台对接集成IVS3800的时候有一些业务问题需要确认: 我们需要用到人或车检索的能力,存在一些疑问: 1.摄像机接入到IVS3800平台后是否默认就开启了录像功能,还是需要通过调用接口去主动设置录像的能力启动? 2. 检索时我们有两种方式,第一种方式时上传一张图片,第二种方式是输入特征值进行检索,针对这两种方式的智能分析任务的算法类型是有统一的的算法类型还是说上传图片进行分析是使用人脸分析算法类型,特征值的方式是以图搜图分析检索? 3. /video/intelligent-analysis/vcm/v1/start-intelligent-analysis 接口文档中说明了camera_id和file_id智能选其一,接口中如果选择file_id的方式,是否默认是在所有支持的摄像机中进行检索? 4./video/intelligent-analysis/vcm/v1/start-intelligent-analysis这个接口的下列参数,如果我选择了camera_id,我是否可以设置为录像模式进行分析?我可能需要分析的是某个时间段的录像,同时,智能分析任务是否可以支持多摄像机批量下发?stream_typeOString当camera_id参数生效时生效,默认为摄像机实况分析。0:实况1:录像 5. 车牌搜索与车辆特征搜索如果用摄像机的话需要创建什么类型的智能分析任务才能进行检索?
-
产品名称:MDC 610软件版本:MDC 610 问题现象(问题描述):咨询一下Adsfi::ImageData与opencv::Mat之间的数据转换是怎么样的,能否提供样例代码
-
为啥我一点论坛里面的压缩包就显示系统错误,我想下载那个weautomate里面pdf转图片控件需要的模块
-
在科技飞速发展的今天,苹果公司再次以其前瞻性的眼光和强大的研发实力,为我们带来了全新的AI眼镜与空间计算技术。这一创新不仅将重新定义我们与数字世界的交互方式,更预示着未来智能生活的新篇章。首先,让我们来探讨一下苹果的AI眼镜。这款眼镜融合了最先进的人工智能技术,能够实时识别用户的动作、语音和情绪,从而提供更加个性化、智能化的服务。无论是查询信息、导航路线,还是进行语音通话,AI眼镜都能以更加自然、便捷的方式满足用户的需求。同时,通过内置的传感器和摄像头,AI眼镜还能够实时监测用户的健康状况,如心率、血压等,为用户的健康保驾护航。而空间计算技术则是苹果AI眼镜的另一大亮点。空间计算通过精确测量和解析三维空间信息,实现了对现实世界的数字化映射。这意味着,用户可以通过AI眼镜看到虚拟物体与现实世界的完美融合,体验到前所未有的沉浸式交互。无论是游戏、教育还是工作,空间计算都将为我们带来更加丰富的视觉体验和更高效的工作流程。此外,苹果AI眼镜与空间计算技术的结合,还将催生出更多创新的应用场景。例如,在医疗领域,医生可以通过AI眼镜远程查看患者的身体状况,进行精准的诊断和治疗;在旅游领域,游客可以通过AI眼镜了解景点的历史文化和背景信息,获得更加丰富的旅游体验;在教育领域,学生可以通过AI眼镜与虚拟教师进行互动学习,提高学习效果和兴趣。当然,任何新技术的推出都不可避免地会面临一些挑战和质疑。例如,隐私保护、数据安全等问题都需要得到充分的重视和解决。但相信以苹果公司的实力和经验,这些问题都将得到有效的解决。总的来说,苹果发布的AI眼镜与空间计算技术无疑为我们打开了一扇通往未来智能生活的大门。它将改变我们与数字世界的交互方式,为我们带来更加便捷、高效、丰富的体验。随着技术的不断进步和应用场景的不断拓展,我们有理由相信,未来的智能生活将更加美好和精彩。
-
什么报错的信息都没有,就是检测框不出来。
-
基于ModelArts实现目标物体检测模型训练和部署。本实验将提供一个“找云宝”样例(“云宝”是华为云的吉祥物),帮助用户快速熟悉ModelArts自动学习的使用过程。通过预置的图像数据集,自动训练并生成检测模型,同时将生成的模型部署为在线服务。部署完成后,用户可通过在线服务识别输入图片是否包含目标物体。实现流程1.准备环境和创建OBS桶2.准备数据3.创建物体检测项目4.数据标注5.自动训练,生成模型6.将模型部署上线为在线服务7.发起检测 1创建OBS桶和目录进入方式,“控制台”->“服务列表”->“存储”->“对象存储服务”,页面右上角点击“创建桶”按钮进入创建页面。什么是OBS?对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,包括:创建、修改、删除桶,上传、下载、删除对象等。1.2 OBS桶设置OBD桶设置参数如下:区域:华北桶名称:自定义(注意:此名称会在后续步骤使用)我将此处的桶名称取为yuntest-modelarts存储类别:标准存储桶策略:私有归档数据直读:开启多AZ:开启点击"立即创建",完成创建1.4创建文件夹点击刚创建的桶名称,进入详情页左侧栏选择“对象”,点击“新建文件夹”,在弹出的新建窗口中:文件夹名称:自定义(此名称会在后续步骤中使用)我将此处的文件夹名称取为dataset-yun点击“确定”完成添加1.5服务授权由于创建自动学习项目需要使用数据管理功能,在开始使用前,需为数据管理模块获取访问OBS权限。在ModelArts管理控制台,进入“数据管理->数据集”页面,单击“服务授权”由具备授权的账号“同意授权”后,即可正常使用:22.1准备数据ModelArts在公共OBS桶中提供了云宝的示例数据集,命名为“Yunbao-Data-Custom”,因此,本文的操作示例使用此数据集进行模型构建。关于数据集的下载您可以在华为云搜索栏,搜索Yunbao-Data-Custom即可获取下载资源:2.2数据解压在本地,将“Yunbao-Data-Custom.zip”压缩包解压。例如,解压至本地“Yunbao-Data-Custom”文件夹下。2.3数据上传按照步骤1操作进入对象存储服务:点击创建的好的桶yuntest-modelarts,进入“对象”页面:再次点击文件夹dataset-yun,在文件夹中选择“上传对象”将步骤2.1下载的本地数据集中的文件夹拖拽至上传对象框中,点击上传即可:点击上传即可完成本地到云端的数据上传:33.1创建物体检测项目进入ModelArts管理控制台主页,单击左侧导航栏“自动学习”添加步骤1保存的访问密钥文件中的密钥:在“物体检测”方框中单击“创建项目”在“创建物体检测项目”页面中,填写“项目名称”、“数据集名称”选择“数据集输入位置”云宝数据集OBS路径为“/yuntest-modelarts/dataset-yun/train/”“数据集输出位置”选择一个空目录如“/yuntest-modelarts/dataset-yun/output/”添加标签集为“yunbao”44.1数据标注数据标注,针对物体检测项目,即在已有数据集图像中,标注出物体位置,并为其打上标签。标注好的数据用于模型训练。云宝数据集中,已标注部分数据,还有部分数据未标注,用户可以选择未标注数据进行手动标注。自动学习项目创建时,会自动执行数据源同步操作。由于数据源同步需要一定时间,如果出现同步失败,可单击“同步数据源”手动执行。在“自动学习->数据标注”页面单击“未标注”页签,此页面展示所有未标注的图片数据。单击任意一张图片,进入图片标注界面。用鼠标框选图片中的云宝所在区域,然后在弹出的对话框中输入标签名称,例如此示例中的“yunbao”,按“Enter”键完成此图片的添加。标注完成后,左侧图片目录中此图片的状态将显示为“已标注”用户可以在下方图片目录中,选择其他图片,重复上述操作继续进行图片标注。如果一张图片有多个云宝,用户可以标注多处。建议将数据集中所有图片都标注完成,这样能得到一个效果比较好的模型。55.1自动训练,生成模型 本次实验由于作者网速问题,只标注了24张图片,建议用户全部标注完成后再选择右侧的开始训练点击开始训练,设置训练参数:单击“确定”开始模型的自动训练。深度学习训练时间相对较长,建议用户耐心等待。如果关闭或退出此页面,系统仍然在执行训练操作。训练完成后,用户可以在界面中查看训练详情,如 “准确率”“评估结果”“训练参数”“分类统计表”等66.1将模型部署上线为在线服务 在“模型训练”页签中,待训练状态变为“已完成”,单击“版本管理”区域中的“部署”。在弹出的部署设置对话框中,选择“计算节点规格”,设置“自动停止”功能,单击“确定”开始将物体检测模型部署上线为在线服务。如果选择免费规格,则不需要设置“自动停止”功能,1小时之后自动停止。启动部署上线后,系统自动跳转至部署上线页面。此页面将呈现模型部署上线的进度和状态。部署上线将耗费较多时间,请您耐心等待。部署完成后,版本管理区域的状态将变更为“运行中”。77.1发起检测模型部署完成后,用户可添加图片进行检测,在“部署上线”界面,选择状态为“运行中”的服务版本,在“服务测试”区域单击“上传”检测图片进行检测。测试1测试2测试3至此实验全部完成。最后大家使用的云端资源记得全部删除如对象存储服务创建的桶,文件夹;ModelArts创建的数据集,部署的模型等都需要删除,并停用访问密钥,以免造成不必要的花费。通过对实验结果的比对,可以看出利用[华为云ModelArts]训练出来的目标物体识别模型是很棒的,六个字总结就是-高效,快捷,省心。
-
原本链接cid:link_0问题:原本代码局限:只能处理黑白图片改进方法:将初始水印消除后的图片作为标签,再次进行分割(如果是黑色就保留原图像素,如果没有就消除)import cv2 import numpy as np import matplotlib.pyplot as plt def enable_color(rgb_image,check_image): # h, w = rgb_image.shape[:2] for i in range(0, h - 1): for j in range(0, w - 1): if check_image[i][j] == 255: for k in range(3): rgb_image[i][j][k] = 255 return rgb_image if __name__ =='__main__': img_path = "1.jpg" im = cv2.imread(img_path) gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) background = gray.copy() for i in range(1,5): kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(2*i+1,2*i+1)) # print('kernel size is ',kernel) background = cv2.morphologyEx(background,cv2.MORPH_CLOSE,kernel) background = cv2.morphologyEx(background,cv2.MORPH_CLOSE,kernel) diff = background - gray # 计算差距 # cv2.namedWindow('diff',cv2.WINDOW_FREERATIO) # 获取图像中前景背景之差 # cv2.imshow('diff',background) # 阈值分割获取黑色字体 _,bw = cv2.threshold(diff,0,255,cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU) # 阈值分割获取黑色区域 # cv2.namedWindow('bw_before', cv2.WINDOW_FREERATIO) # cv2.imshow('bw_before', bw) _,dark = cv2.threshold(background,0,255,cv2.THRESH_BINARY_INV|cv2.THRESH_OTSU) darkpix = cv2.countNonZero(dark)# 获取 dark非0d图像像素个数 darkpix = [0]*darkpix index = 0 # cv2.namedWindow('gray', cv2.WINDOW_FREERATIO) # cv2.imshow('gray', gray) for r in range(dark.shape[0]): for c in range(dark.shape[1]): if(dark[r][c]): darkpix[index] = gray[r][c] index = index +1 # 阈值分割 dark 区域 因此我们在里面得到更深的像素 darkpix = np.array(darkpix) _,darkpix = cv2.threshold(darkpix,0,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU) # cv2.namedWindow('darkpix', cv2.WINDOW_FREERATIO) # cv2.imshow('darkpix', darkpix) # 把 取到的像素粘贴到 其渠道的 darker pixels # cv2.namedWindow('dark',cv2.WINDOW_FREERATIO) # cv2.imshow('dark',dark) index = 0 for r in range(dark.shape[0]): for c in range(dark.shape[1]): if (dark[r][c]): bw[r][c] = darkpix[index] index = index +1 # cv2.namedWindow('bw',cv2.WINDOW_FREERATIO) # cv2.imshow('bw',bw) out=enable_color(im, bw) # cv2.namedWindow('out',cv2.WINDOW_FREERATIO) # cv2.imshow('out',out) cv2.imwrite(filename="77__.jpg", img=bw) cv2.imwrite(filename="77__5.jpg",img=out) # cv2.waitKey(0)
-
一、简介本项目主要运用华为云 EI 的 ModelArts 的自动学习以及云对象存储的 OBS,实现简单的垃圾分类系统。二、内容描述本垃圾分类图像识别系统主要通过创建图像分类自动学习项目,进行数据标注,进行自动训练和部署测试,再到最后的结束测试。 三、主要流程四、图像分类任务介绍ModelArts 服务之自动学习图像分类项目,是对图像进行检测分类。添加图片并对图像进行分类标注,每个分类识别一种类型的图像。完成图片标注后开始自动训练,即可快速生成图像分类模型。可应用于商品的自动识别、运输车辆种类识别和残次品的自动检测。例如质量检查的场景,则可以上传产品图片,将图片标注“合格”、“不合格”,通过训练部署模型,实现产品的质检。五、系统创建1、创建项目2、添加图片3、数据标注进行“一次性快餐盒-其他垃圾” 的数据标注。 先将左下角的数字选择为 45, 点击图片选择同类的图片(一次可以选择一张或者多张),在标签名栏填写当前选择图片的标签(已有的标签可以直接选择) , 输入标签名, 点击确定。4、自动训练5、部署测试预测结果:
-
使用RPA里的图像识别的控件时,它识别的是整个图片中所有的内容,怎么让他只识别图片的固定范围内的内容呢?
yd_214616271
发表于2023-02-22 08:32:30
2023-02-22 08:32:30
最后回复
This is WeAutomate
2023-02-22 10:18:31
161 3 -
Epoch: [2][0/98], Time 62.016607, Data 0.979176 Loss 4.791955 Prec@1 10.742188 Prec@5 49.804688 forward time: 3.8906619548797607forward time: 6.2228193283081055grad time: 56.18103861808777accuracy time: 0.010275602340698242optimizer time: 0.07999753952026367
-
ClimateNeRF 将物理模拟与 NeRF 场景模型融合在一起,制作出逼真的气候变化影响视频。下面将举一个简单的例子来说明在该方法中组件如何实现交互:假设现在要建立一个秋天洪水泛滥场景的模型。研究者首先获取图像,应用 Fall 风格,并根据结果构建出 NeRF。然后使用 NeRF 中的几何信息来计算水面。这可以用密度场、颜色场以及法线和 BRDF 表征来表示。最后为了渲染,我们用光线来查询模型。研究者编辑 NeRF 的密度和颜色函数来表示烟雾等效果,并截取光线来表示镜面效应。如果一条光线首先在 NeRF 中遇到高密度,那么会对这条光线使用 NeRF integral;但如果第一次碰撞是在水面,则光线会被反射到水面,然后用反射光线查询 NeRF。人们往往难以从日积月累的小变化中推导出实质性的结果,所以对于大多数人而言,将气候变化所产生的影响具像化也并非易事。减缓二氧化碳排放(比如减少化石燃料的使用)或弱化其环境影响(比如建立防洪措施)等的成本往往是人尽皆知的高昂,而其所能带来的收益却看似虚无缥缈、遥遥无期。如果无法将效果具像化,那么这些措施的投用也将举步维艰。本文中,来自 UIUC、马里兰大学帕克分校的研究者展示了如何将物理模拟(产生很好的天气效果预测,但只有中分辨率图像)与神经辐射场(产生 SOTA 场景模型,但据悉从未与物理模拟一起使用)合并使用。传统物理模拟可以在传统图形 pipeline 中为 3D 场景模拟出真实的天气效果,但这些方法基于传统的多边形模型,而构建能从单个场景的多个图像中产生逼真渲染的多边形模型仍具有挑战性。神经辐射场(NeRFs)可以从少量图像中生成逼真的 3D 场景模型。论文地址:https://arxiv.org/pdf/2211.13226.pdf研究者推出了一个 ClimateNeRF,它可以渲染出真实的天气效果,包括雾霾、雪和洪水。渲染效果和在画面上看到的一致,因此生成的影片往往令人信服。从更高的层面来看,研究者调整了场景图像以反映整体物理效果,并根据调整后的图像构建了场景的 NeRF 模型;接着复原了一个近似的几何表示,并在该几何中应用物理模拟;最后使用全新的光线追踪器进行渲染。调整图像这一步很重要。比方在冬天,树木图像的饱和度往往较低。研究者在一个 NGP 框架中使用一种新颖的风格迁移方法,它可以在不改变场景几何的情况下获得全局效果。光线追踪器通过在渲染过程中仔细考虑光线效果将物理模型和 NeRF 模型相融合,例如一条眼球射线可能首先遇到高密度的 NeRF(因此返回通常的结果)或者它可以击中插入的水面(因此被反射以再次查询模型)。研究者展示了 ClimateNeRF 在 Tanks and Temple、MipNeRF360 和 KITTI-360 数据集中不同 3D 场景的适用性,同时与 stable diffusion inpainting、ClimateGAN 等 SOTA 2D 图像编辑方法以及与 SOTA 3D NeRF stylization 的对比。定性和定量研究结果都表明,ClimateNeRF 的模拟结果明显较同类方法更加真实。此外,本文还展示了这种物理启发方法的可控性,可以改变水位、风力和方向,以及雪和雾霾的厚度和浓度。ClimateNeRF 方法可以做到:让视图保持一致(这也是可以用来制作影片的原因,这在逐帧合成中很难做到)、逼真的超级现实主义(场景是一个 NeRF 表示)、并且是可控的(用户可以在模拟中调整物理参数)。如下图 1 所示,生成的照片逼真、符合常理且具备时间一致性。
-
一名身穿白色连衣裙的少女正在伸手采花,她动作轻柔,姿态款款,眼眸低垂。
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签