当前位置: 首页 > news >正文

基于Intel® AI Analytics Toolkits的智能视频监控系统

【oneAPI DevSummit & OpenVINODevCon联合黑客松】
跳转链接:https://marketing.csdn.net/p/d2322260c8d99ae24795f727e70e4d3d

目录

1方案背景

2方案描述

3需求分析

4技术可行性分析

5详细设计5.1数据采集

5.2视频解码与帧提取

5.3人脸检测

5.4行为识别

5.5数据分析

5.6结果展示

6方案优点与适用场景

6.1解决的问题

6.2适用场景

7总结

方案中用到的工具及组件


1方案背景

当代社会对于视频监控的需求体现在各行各业,但传统的视频监控的弊端也逐渐显露。

主要有以下几个方面。首先,人工监控效率比较低,传统视频监控系统依赖人工操作和观察,监控人员需要连续观看监控画面,容易疲劳和错过重要的事件或行为,导致监控效率低下;其次,实时性差,传统视频监控系统中的录像需要人工进行回放和分析,无法实时监测和及时响应突发事件,对于紧急情况的处理存在一定的滞后性;数据处理和管理方面也比较困难,传统视频监控系统中产生的大量视频数据需要存储和管理,通常使用硬盘,存在容量有限、数据丢失风险高等问题,同时查找和检索特定事件的视频也相对困难;最后,还有明显的劣势就是由于传统视频监控系统主要依赖人工判断和操作,存在误报和漏报的情况。监控人员可能因为疲劳、视觉限制或判断错误。

正因为传统视频监控在监控效率、实时性、数据处理和管理以及误报漏报等方面存在一些劣势问题。为了克服这些问题,智能视频监控系统应运而生.

通过结合人工智能和图像识别等先进技术,智能视频监控系统能够高效的实时监测和响应能力、智能化的数据处理和管理等优势,满足当下社会对于安全和管理的需求,并且还能进行自动分析和处理大量的监控数据,并及时发出警报等等更加便捷的功能,相比传统监控需要人工观察和分析,智能系统也能够更快速、准确地识别异常行为。

2方案描述

本方案利用英特尔® oneAPI AI分析工具套件中的产品组件和库,结合深度学习和视频分析技术,构建一个智能视频监控系统,用于实时监测和分析人员活动,提供监测,识别,报警等功能,还可用于大数据分析,远程访问和管理等方面。

3需求分析

功能需求:系统需要实时采集视频流并进行预处理,包括去噪和降低分辨率。同时,系统需要能够解码视频并提取关键帧用于人脸检测和行为识别。最后,系统需要展示分析结果,包括标注人脸和行为,并能够实时报警。

性能需求:系统需要在实时场景下对大量视频数据进行处理和分析,因此需要具备高效的算法和硬件支持,并保证处理速度和响应时间符合要求。

可靠性需求:系统需要具备稳定可靠的运行能力,包括对异常情况的处理能力,如断电恢复和网络故障处理。

安全需求:系统需要确保视频数据的安全性和隐私保护,防止未经授权的访问和篡改。

用户体验需求:系统需要具备良好的用户界面和操作体验,保证用户能够方便地使用和理解系统的功能和结果展示。

4技术可行性分析

1.数据采集和预处理:使用摄像头设备进行实时视频流采集,并利用图像处理库(如OpenCV)对视频流进行预处理。这些技术已经成熟,具备较高的可行性。

2.视频解码与帧提取:使用英特尔® oneAPI加速工具对视频进行解码,并提取关键帧用于后续的人脸检测和行为识别。这些技术在英特尔® Distribution of OpenVINO™ Toolkit中得到支持,具备较高的可行性。

3.人脸检测:使用英特尔® OpenVINO™ Toolkit中的人脸检测模型,对每个关键帧进行实时检测人脸。该工具包含了经过训练和优化的模型,具备较高的可行性。

4.行为识别:结合英特尔® Distribution of OpenVINO™ Toolkit中的行为识别模型,对监控区域内的人员活动进行分析。使用深度学习框架加载和运行行为识别模型,根据视频流的关键帧进行行为识别。这些技术已经成熟,具备较高的可行性。

5.结果展示:利用图像处理库(如OpenCV)将人脸检测和行为识别的结果标注在原始视频帧上,并将结果实时显示或保存为报警。

5详细设计
5.1数据采集

使用摄像头设备进行实时视频流采集。

使用适当的图像处理库(如OpenCV)对视频流进行预处理,例如去噪、降低分辨率等。

去噪处理:在实时视频流采集过程中,可能会受到各种干扰,例如摄像头本身的噪声、光线变化等,因此需要进行去噪处理来提高图像质量。

使用OpenCV库进行高斯模糊去噪

# 读取原始帧frame = cv2.imread("original_frame.jpg")# 高斯模糊去噪denoised_frame = cv2.GaussianBlur(frame, (5, 5), 0)# 显示去噪后的结果cv2.imshow("Denoised Frame", denoised_frame)cv2.waitKey(0)cv2.destroyAllWindows()降低分辨率处理: 对视频流进行降低分辨率处理可以减少数据量和计算复杂度,同时可以加快后续的人脸检测和行为识别的处理速度。使用OpenCV库进行图像缩放# 读取原始帧frame = cv2.imread("original_frame.jpg")# 缩小分辨率scaled_frame = cv2.resize(frame, (0, 0), fx=0.5, fy=0.5)# 显示降低分辨率后的结果cv2.imshow("Scaled Frame", scaled_frame)cv2.waitKey(0)cv2.destroyAllWindows()

通过以上的去噪和降低分辨率处理,可以使得后续的视频解码、人脸检测和行为识别等步骤更加高效和准确。

5.2视频解码与帧提取

视频解码与帧提取是智能视频监控系统中非常重要的一步,它涉及到从视频数据中提取出关键帧,为后续的人脸检测和行为识别提供数据支持。

视频解码:视频解码是将视频文件中的压缩数据解码成原始的视频帧数据的过程,以便后续的处理和分析。在这个步骤中,可以使用英特尔® oneAPI加速工具中提供的相应库和工具来进行视频解码,我们使用Media SDK进行硬件加速的视频解码。

帧提取:一般情况下,并不需要对视频的每一帧都进行人脸检测和行为识别,因为视频数据通常包含了大量的冗余信息。因此在帧提取的过程中,我们可以选择提取视频中的关键帧,然后对这些关键帧进行后续的处理和分析。

我们打开一个视频文件,使用OpenCV库进行视频解码和帧提取。通过设定提取间隔,我们可以控制关键帧的提取频率。当达到提取间隔时,我们将当前帧保存为关键帧图像文件,以便后续的人脸检测和行为识别。

# 打开视频文件video_capture = cv2.VideoCapture('input_video.mp4')# 视频帧计数器frame_count = 0# 提取间隔,例如每隔5帧提取一次extract_interval = 5# 逐帧读取视频while video_capture.isOpened():# 读取一帧ret, frame = video_capture.read()if not ret:break# 如果达到提取间隔,保存当前帧为关键帧if frame_count % extract_interval == 0:key_frame_name = 'keyframe_{}.jpg'.format(frame_count)cv2.imwrite(key_frame_name, frame)print('Saved key frame: {}'.format(key_frame_name))frame_count += 1video_capture.release()cv2.destroyAllWindows()

这样,视频解码与帧提取步骤就完成了,我们得到了一系列关键帧图像,可以用于接下来的人脸检测和行为识别。

5.3人脸检测

使用英特尔® OpenVINO™ Toolkit中的人脸检测模型,在每个关键帧中实时检测人脸。

使用以下代码示例进行人脸检测:

import cv2 from openvino.inference_engine import IECore# 加载模型ie = IECore()Net=ie.read_network(model='face_detection.xml',weights='face_detection.bin')exec_net = ie.load_network(network=net, device_name='CPU')# 读取关键帧frame = cv2.imread("keyframe.jpg")# 预处理input_blob = cv2.dnn.blobFromImage(frame, size=(300, 300), ddepth=cv2.CV_8U)# 推理result = exec_net.infer(inputs={'input_blob_name': input_blob})# 解析结果for detection in result['detection_out']:confidence = detection[2]if confidence > 0.5:x_min, y_min, x_max, y_max = detection[3:7]cv2.rectangle(frame, (x_min, y_min), (x_max, y_max), (0, 255, 0), 2)# 显示结果cv2.imshow("Face Detection", frame)cv2.waitKey(0)cv2.destroyAllWindows()

5.4行为识别

首先加载已经训练好的行为识别模型(通过TensorFlow进行训练得到的)。然后对关键帧进行预处理,将其输入到模型中进行推理,得到行为的预测结果。最后,将预测的行为结果标注在图像上,并显示或保存带有标注的图像,以便展示给监控人员或用于进一步的处理和分析。

以下是一个用TensorFlow进行行为识别的简单代码:import tensorflow as tfimport cv2# 加载行为识别模型model = tf.keras.models.load_model('behavior_model.h5')# 读取关键帧frame = cv2.imread("keyframe.jpg")# 对关键帧进行预处理processed_frame = preprocess_image(frame)  # 进行图像预处理,例如调整大小、归一化等操作# 使用模型进行推理predictions = model.predict(processed_frame)# 获取最终的行为识别结果predicted_behavior = get_predicted_behavior(predictions)  # 根据模型输出获取最终的行为识别结果# 在图像上标注行为识别结果cv2.putText(frame,predicted_behavior,(50,50),cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)# 显示带有行为识别结果标注的图像cv2.imshow("Behavior Recognition", frame)cv2.waitKey(0)cv2.destroyAllWindows()

5.5数据分析

利用英特尔® DevCloud和英特尔® oneAPI的分布式计算能力,对大规模视频数据进行并行处理和分析。

使用分布式计算框架(如Apache Spark)将数据分片并在多个处理器上并行处理,以提高处理速度和效率。

在数据分析步骤中,针对大规模视频数据进行并行处理和分析是非常关键的,我们通过英特尔® DevCloud和英特尔® oneAPI的分布式计算能力来实现。利用分布式计算框架(选用Apache Spark)对视频数据进行并行处理和分析:

我们利用SparkSession创建一个Spark应用程序,通过Spark读取大规模视频数据。接着使用zipWithIndex和map等操作对视频数据进行分片,并利用mapPartitions将处理任务并行化。最后通过reduce将各个分片的结果汇总,并展示或保存最终的分析结果。需要根据不同的业务场景和数据的特点来编写process_video_data、merge_results和show_or_save_results等函数来实现实际的数据分析逻辑和结果展示操作。

from pyspark.sql import SparkSession# 创建SparkSessionspark = SparkSession.builder.appName("VideoDataAnalysis").getOrCreate()# 读取大规模视频数据video_data = spark.read.format("video").load("hdfs://path_to_video_data")# 对视频数据进行分片video_data_rdd = video_data.rdd.zipWithIndex().map(lambda x: (x[1] % num_partitions, x[0]))# 在多个处理器上并行处理result_rdd = video_data_rdd.mapPartitions(process_video_data)# 将分析结果汇总final_result = result_rdd.reduce(merge_results)# 展示或保存分析结果show_or_save_results(final_result)# 停止SparkSessionspark.stop()

5.6结果展示

使用图像处理库(如OpenCV)将人脸检测和行为识别的结果标注在原始视频帧上,并将结果实时显示或保存为报警记录。

实时结果展示:可以通过实时视频流展示人脸检测和行为识别的结果,例如在监控中心的监视屏幕上实时显示标记了人脸框和行为类别的视频画面。这可以帮助监控人员及时发现异常情况并采取相应的措施。

使用OpenCV库展示实时的人脸检测结果

import cv2from openvino.inference_engine import IECore# 加载模型ie = IECore()net = ie.read_network(model='face_detection.xml', weights='face_detection.bin')exec_net = ie.load_network(network=net, device_name='CPU')# 读取视频流video_capture = cv2.VideoCapture(0)while True:# 逐帧读取视频ret, frame = video_capture.read()if not ret:break# 预处理input_blob=cv2.dnn.blobFromImage(frame,size=(300,300), ddepth=cv2.CV_8U)# 推理result = exec_net.infer(inputs={'input_blob_name': input_blob})# 解析结果for detection in result['detection_out']:confidence = detection[2]if confidence > 0.5:x_min, y_min, x_max, y_max = detection[3:7]cv2.rectangle(frame, (x_min, y_min), (x_max, y_max), (0, 255, 0), 2)# 显示结果cv2.imshow("Real-time Face Detection", frame)# 按下 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):breakvideo_capture.release()cv2.destroyAllWindows()我们实时从摄像头中获取视频流,并在每一帧上进行人脸检测并实时展示结果。报警记录保存:当发现异常情况时,还将标记了人脸检测和行为识别结果的关键帧保存为报警记录,以便后续的查看和分析。通过将结果帧保存为图片文件来实现。保存标记了人脸检测结果的关键帧import cv2# 读取关键帧frame = cv2.imread("keyframe.jpg")# 在关键帧上标记人脸检测结果# ...# 保存标记后的关键帧为报警记录图片文件cv2.imwrite("alarm_record.jpg",frame)print('Saved alarm record: alarm_record.jpg')

通过以上方式,我们实现了对人脸检测和行为识别结果的实时展示以及异常情况的报警记录保存。这样就能够有效地提高监控系统的智能化水平和工作效率。

以上就是本方案大致的实现流程。

6方案优点与适用场景

6.1解决的问题

1.安全保障:可以实时监测监控区域内的活动,识别异常行为(如盗窃、打架等),并及时发出警报,从而提高安全性,减少犯罪事件发生的可能性。

2.事故预防:通过对监控区域内的活动进行实时分析,系统可以识别潜在的安全风险和危险行为,并及时采取预防措施,减少意外事故的发生。

3.人员管理:系统可以帮助管理人员监视和跟踪工作人员和顾客的活动,协助管理人员更好地分配资源和规划工作流程。

4.数据分析:系统可以收集大量视频数据,并利用数据分析技术来提取有用的信息,如顾客流量统计、行为趋势分析等,为经营决策提供参考依据。

5.远程监控:用户可以通过网络远程访问监控画面,实现对监控区域的远程监控和管理,提高管理效率和便利性。

6.2适用场景

1.商店和超市:用于防盗和管理人员监督。

2.公共交通枢纽:用于监控车站和机场等公共场所,确保乘客的安全和秩序。

3.工厂和仓库:用于监控生产线和存储区域,提高安全性和生产效率。

4.学校和校园:用于学生安全和管理,监测校园活动。

5.智能交通管理:利用视频监控系统进行交通流量监测和违章行为检测,提高道路交通管理效率。

6.环境监测:结合图像识别和监测技术,用于环境监测、自然灾害预警等领域。

7.医疗保健:用于监控医院和养老院内的患者和老人,确保其安全和健康。

7总结

未来,随着深度学习技术和硬件加速器的不断发展,智能监控系统将实现更高精度和更快速的处理能力,为安防领域带来更多可能性。基于Intel® AI Analytics Toolkits的智能视频监控系统将有望在智能监控领域取得显著进展。但是,实现这一方案也面临一些挑战,包括模型训练的数据标注、算力需求较大、实时性要求等,需要综合考虑硬件、软件和数据等方面的因素,以实现系统的稳定运行和高效处理。

方案中用到的工具及组件

1.英特尔® Distribution of OpenVINO™ Toolkit

2.英特尔® DevCloud

3.英特尔® oneAPI 加速工具

相关文章:

基于Intel® AI Analytics Toolkits的智能视频监控系统

【oneAPI DevSummit & OpenVINODevCon联合黑客松】 跳转链接:https://marketing.csdn.net/p/d2322260c8d99ae24795f727e70e4d3d 目录 1方案背景 2方案描述 3需求分析 4技术可行性分析 5详细设计5.1数据采集 5.2视频解码与帧提取 5.3人脸检测 5.4行为识别…...

深度学习中的注意力机制:原理、应用与实践

深度学习中的注意力机制:原理、应用与实践 摘要: 本文将深入探讨深度学习中的注意力机制,包括其原理、应用领域和实践方法。我们将通过详细的解析和代码示例,帮助读者更好地理解和应用注意力机制,从而提升深度学习模…...

将本地项目推送到github

欢迎大家到我的博客浏览。将本地项目推送到github | YinKais Blog 本地项目上传至 GitHub<!--more--> 1、进入项目根目录&#xff0c;初始化本地仓库 git init 2、创建密钥&#xff1a;创建 .ssh 文件夹&#xff0c;并进入 .ssh 文件夹 mkdir .ssh cd .ssh/ 3、生成…...

[读论文]meshGPT

概述 任务&#xff1a;无条件生成mesh &#xff08;无颜色&#xff09;数据集&#xff1a;shapenet v2方法&#xff1a;先trian一个auto encoder&#xff0c;用来获得code book&#xff1b;然后trian一个自回归的transformermesh表达&#xff1a;face序列。face按规定的顺序&a…...

反序列化漏洞详解(一)

目录 一、php面向对象 二、类 2.1 类的定义 2.2 类的修饰符介绍 三、序列化 3.1 序列化的作用 3.2 序列化之后的表达方式/格式 ① 简单序列化 ② 数组序列化 ③ 对象序列化 ④ 私有修饰符序列化 ⑤ 保护修饰符序列化 ⑥ 成员属性调用对象 序列化 四、反序列化 …...

键盘打字盲打练习系列之指法练习——2

一.欢迎来到我的酒馆 盲打&#xff0c;指法练习&#xff01; 目录 一.欢迎来到我的酒馆二.开始练习 二.开始练习 前面一个章节简单地介绍了基准键位、字母键位和数字符号键位指法&#xff0c;在这个章节详细介绍指法。有了前面的章节的基础练习&#xff0c;相信大家对盲打也有了…...

小程序----使用图表显示数据--canvas

需求&#xff1a;在小程序上实现数据可视化 思路&#xff1a;本来想用的是echarts或者相关的可视化插件&#xff0c;但因为用的是vue3&#xff0c;大多数插件不支持&#xff0c;所以用了echarts&#xff0c;但最后打包的时候说包太大超过2M无法上传&#xff0c;百度了一下&…...

⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)

1.这里我代码没啥问题~~~编辑器里也没毛病 void Start(){// 加载底图和上层图片string backgroundImagePath Application.streamingAssetsPath "/background.jpg";Texture2D backgroundTexture new Texture2D(2, 2);byte[] backgroundImageData System.IO.File.R…...

document

原贴连接 1.在整个文档范围内查询元素节点 功能API返回值根据id值查询document.getElementById(“id值”)一个具体的元素节根据标签名查询document.getElementsByTagName(“标签名”)元素节点数组根据name属性值查询document.getElementsByName(“name值”)元素节点数组根据类…...

NodeJS(二):npm包管理工具、yarn、npx、pnpm工具等

目录 (一)npm包管理工具 1.了解npm 2.npm的配置文件 常见的配置属性 scripts属性*** 依赖的版本管理 3.npm安装包的细节 4.package-lock文件 5.npm install原理** 6.npm的其他命令 (二) 其他包管理工具 1.yarn工具 基本指令 2.cnpm工具 3.npx工具 (1)执行本地…...

day3 移出链表中值为x的节点

ListNode* removeElements(ListNode* head, int val) { ListNode* dummyHead new ListNode(0); // 设置一个虚拟头结点 dummyHead->next head; // 将虚拟头结点指向head&#xff0c;这样方便后面做删除操作 ListNode* cur dummyHead; while (cur->next ! NULL…...

浅谈 Guava 中的 ImmutableMap.of 方法的坑

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐&…...

Symbol()和迭代器生成器

目录 1、Symbol&#xff08;&#xff09; 2、迭代器生成器 执行流程 模拟生成器函数 for of 遍历迭代选择器 yield * Generator函数应用 1、Symbol&#xff08;&#xff09; Symbol表示独一无二的值 const s1 Symbol(a)const s2 Symbol(a)console.log(s1 s2) // fa…...

USB Type-C的基本原理

1 USB Type-C的基本原理 1.1 基本特性 Figure 1-1 USB Type-C接头外形 USB Type-C&#xff08;简称USB-C&#xff09;的基本特性&#xff1a; 1. 接口插座的尺寸与原来的Micro-USB规格一样小&#xff0c;约为8.3mm X 2.5mm 2. 可承受1万次反复插拔 3. 支持正反均可插入的“正反…...

HarmonyOS开发(八):动画及网络

1、动画概述 在ArkUI中&#xff0c;产生动画的方式是改变组件属性值并且指定相关的动画参数。当属性值发生变化后&#xff0c;按照动画参数&#xff0c;从原来的状态过渡到新的状态&#xff0c;就形成一个动画。 动画的相关参数如下&#xff1a; 属性名称 属性类型 默认值 …...

Pinctrl子系统和GPIO子系统

Pinctrl子系统&#xff1a; 借助Princtr子系统来设置一个Pin的复用和电气属性&#xff1b; pinctrl子系统主要做的工作是&#xff1a;1. 获取设备树中的PIN信息&#xff1b;2.根据获取到的pin信息来设置的Pin的复用功能&#xff1b;3.根据获取到的pin信息去设置pin的电气特性…...

Unittest单元测试框架之unittest构建测试套件

构建测试套件 在实际项目中&#xff0c;随着项目进度的开展&#xff0c;测试类会越来越多&#xff0c;可是直到现在我 们还只会一个一个的单独运行测试类&#xff0c;这在实际项目实践中肯定是不可行的&#xff0c;在 unittest中可以通过测试套件来解决该问题。 测试套件&…...

Django回顾4

一.过滤器 1.过滤器格式 {{变量|过滤器名字}} 2.怎么使用 1.注册app 2.在app下创建templatetags模块&#xff08;模块名只能是templatetags&#xff09; 3.在包下写一个py文件&#xff0c;随便命名 4.在py文件中写入&#xff1a;from django import template …...

Apache APISIX 体验指南

APISIX 体验指南 所有的 sh 脚本通过 git bash 执行。 出现错误仔细核对文档。 github 地址&#xff1a; 使用 docker 安装 apisix 确保本地安装 Docker 和 Docker-compose 如未安装参开以下文档安装&#xff1a; Docker&#xff1a;https://docs.docker.com/engine/install/c…...

Promise的resolve和reject方法(手写题)

1.resolve 2.reject 3.手写 1.resolve //构造函数上添加 resolve 方法 Promise.resolve function (value) {return new Promise((resolve, reject) > {if (value instanceof Promise) {value.then((val) > {resolve(val)},(err) > {reject(err)})} else {resolve(v…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...