Py之cv2:cv2(OpenCV,opencv-python)库的简介、安装、使用方法(常见函数、图像基本运算等)

1. OpenCV简介

1.1 OpenCV定义与功能

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它为计算机视觉应用程序提供了一个通用的基础设施,并加速了在商业产品中使用机器感知。作为BSD许可的产品,OpenCV使企业可以很容易地利用和修改代码。该库拥有超过2500个优化算法,其中包括经典和最先进的计算机视觉和机器学习算法的综合集。

OpenCV的主要功能包括:

  • 图像处理:提供了丰富的图像处理函数,如滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图、图像金字塔等。

  • 视频分析:支持视频的读取、写入和处理,能够进行运动检测、目标跟踪等操作。

  • 特征提取与匹配:具备强大的特征提取算法,如SIFT、SURF、ORB等,可用于图像匹配、三维重建等应用。

  • 机器学习:集成了多种机器学习算法,如支持向量机(SVM)、决策树、神经网络等,可用于图像分类、目标识别等任务。

  • 计算摄影学:支持图像的增强、融合、超分辨率重建等操作,可用于提高图像质量和视觉效果。

  • 三维重建与增强现实:提供了三维重建的算法和工具,可用于从图像或视频中重建三维场景,以及实现增强现实应用。

1.2 OpenCV应用领域

OpenCV的应用领域非常广泛,涵盖了多个行业和研究方向:

计算机视觉领域

  • 人机互动:通过图像和视频分析,实现手势识别、面部表情识别等功能,使人机交互更加自然和直观。

  • 物体识别:能够识别和分类图像中的各种物体,如车辆、行人、动物等,广泛应用于安防监控、智能交通等领域。

  • 图像分割:将图像分割成不同的区域或对象,为后续的分析和处理提供基础,如医学图像分割、遥感图像分割等。

  • 人脸识别:实现人脸的检测、识别和验证,应用于门禁系统、手机解锁、社交网络等领域。

  • 动作识别:分析视频中的人物动作,用于体育训练、康复治疗、视频监控等场景。

  • 运动跟踪:跟踪图像或视频中的运动目标,如车辆跟踪、人体跟踪等,可用于交通流量监测、机器人导航等。

  • 机器人视觉:为机器人提供视觉感知能力,帮助机器人进行环境感知、路径规划、物体抓取等操作。

  • 运动分析:分析物体的运动轨迹和速度,应用于体育分析、工业自动化等领域。

  • 机器视觉:用于工业生产中的质量检测、缺陷检测、尺寸测量等,提高生产效率和产品质量。

  • 结构分析:分析图像中的结构信息,如建筑物的结构、道路的状况等,应用于土木工程、交通管理等领域。

  • 汽车安全驾驶:通过图像和视频分析,实现车道偏离预警、前车碰撞预警、行人检测等功能,提高驾驶安全性。

计算机操作底层技术

  • 图像数据操作:提供图像数据的分配、释放、复制、设置和转换功能,支持图像和视频文件的输入输出操作。

  • 矩阵和向量操作:实现矩阵积、解方程、特征值以及奇异值等线性代数算法,为图像处理和机器学习提供数学基础。

  • 动态数据结构:支持列表、队列、集合、树、图等动态数据结构,方便进行数据的组织和管理。

  • 基本的GUI功能:提供图像与视频显示、键盘和鼠标事件处理、滚动条等基本的图形用户界面功能,方便用户与程序进行交互。

  • 图像标注:支持在图像上绘制线、二次曲线、多边形、文字等,用于图像的标注和说明。

2. OpenCV安装方法

2.1 直接命令法

直接命令法是安装OpenCV最简便的方法之一。通过Python的包管理工具pip,可以快速安装OpenCV库。在命令行中输入以下命令即可完成安装:

bash复制

pip install opencv-python

这种方法适用于大多数用户,因为它简单快捷,不需要额外的配置。不过,需要注意的是,直接命令法安装的OpenCV版本可能不是最新的,或者可能与系统中已安装的其他库存在版本冲突。此外,这种方法安装的OpenCV可能不包含一些额外的贡献模块,如opencv-contrib-python,这些模块提供了更多的功能和算法。

2.2 使用whl文件法

使用whl文件法安装OpenCV可以提供更多的灵活性和控制。首先,需要从官方网站https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv下载与你的Python版本和操作系统架构相匹配的OpenCV whl文件。例如,如果你使用的是Python 3.8版本,在Windows操作系统上,你可能会下载类似opencv_python‑4.5.1‑cp38‑cp38‑win_amd64.whl的文件。

下载完成后,在命令行中切换到whl文件所在的目录,然后使用pip命令进行安装:

bash复制

pip install opencv_python‑4.5.1‑cp38‑cp38‑win_amd64.whl

使用whl文件法的好处是可以精确控制安装的OpenCV版本,避免版本冲突问题。此外,这种方法还可以安装包含额外贡献模块的OpenCV版本,如opencv-contrib-python,这些模块提供了更多的高级功能和算法,对于需要这些功能的用户来说非常有用。

2.3 Anaconda环境下安装

对于使用Anaconda环境的用户,安装OpenCV也非常简单。Anaconda是一个流行的Python数据科学平台,它提供了丰富的科学计算库和工具。在Anaconda环境中,可以通过conda命令或者pip命令来安装OpenCV。

使用conda命令安装OpenCV:

bash复制

conda install -c conda-forge opencv

或者使用pip命令安装:

bash复制

pip install opencv-python

在Anaconda环境中安装OpenCV的好处是可以更好地管理依赖关系和环境配置。Anaconda提供了强大的环境管理功能,可以轻松创建和切换不同的Python环境,这对于需要在不同项目中使用不同版本的OpenCV的用户来说非常方便。此外,Anaconda还集成了许多其他科学计算库,如NumPy、SciPy、Matplotlib等,这些库与OpenCV一起可以构建强大的计算机视觉和机器学习应用。

3. OpenCV基础函数

3.1 图像读取与显示

在使用OpenCV进行图像处理时,图像的读取与显示是最基本的操作。cv2.imread()函数用于读取图像文件,它将图像读入为NumPy数组,适合处理.jpg、.png、.bmp、.tiff等常见格式的图像。函数原型为cv2.imread(filename, flags=1),其中filename是要读取的图像文件的名称(包括路径),flags参数用于指定读图的方式。flags可以接受的正整数值有以下几种可能:

  • cv2.IMREAD_COLOR:默认值,用于读取一张彩色图像。

  • cv2.IMREAD_GRAYSCALE:以灰度模式读取图像。

  • cv2.IMREAD_UNCHANGED:读取图像包括alpha通道。

例如,读取一张彩色图像的代码如下:

Python复制

import cv2
img = cv2.imread('path/to/image.jpg', cv2.IMREAD_COLOR)

图像的显示使用cv2.imshow()函数,其函数原型为cv2.imshow(window_name, image),其中window_name是窗口名称,image是要显示的图像。例如:

Python复制

cv2.imshow('Image Window', img)
cv2.waitKey(0)  # 等待键盘输入,参数为0表示无限等待
cv2.destroyAllWindows()  # 关闭所有创建的窗口

3.2 图像保存与复制

图像的保存使用cv2.imwrite()函数,其函数原型为cv2.imwrite(filename, img, params),其中filename是要保存的文件名,img是要保存的图像,params是针对特定格式的参数,如JPEG图像的质量(0 - 100的整数,默认95)。例如,保存一张图像的代码如下:

Python复制

cv2.imwrite('path/to/save/image.jpg', img)

图像的复制使用img.copy()方法,该方法返回图像的一个副本。例如:

Python复制

img_copy = img.copy()

3.3 图像颜色空间转换

图像颜色空间转换是图像处理中的一个重要环节,OpenCV提供了cv2.cvtColor()函数来实现不同颜色空间之间的转换。函数原型为cv2.cvtColor(src, code, dstCn=None),其中src是输入图像,code是颜色空间转换的代码,dstCn是目标图像的通道数。例如,将BGR图像转换为灰度图像的代码如下:

Python复制

gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

此外,还可以进行其他颜色空间的转换,如BGR到HSV、BGR到LAB等。这些转换在图像分割、特征提取等应用中非常有用。例如,将BGR图像转换为HSV颜色空间的代码如下:

Python复制

hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

通过这些基础函数,用户可以方便地进行图像的读取、显示、保存、复制以及颜色空间的转换,为后续的图像处理和分析打下坚实的基础。

4. 图像基本运算

4.1 图像算术运算

图像算术运算是图像处理中的基础操作,包括图像的加法、减法、乘法和除法等。这些运算可以用于图像的合成、增强、对比度调整等多种应用。

  • 图像加法:图像加法可以将两个图像或一个图像与一个常数相加。在OpenCV中,可以使用cv2.add()函数来实现图像加法。例如,将两个图像img1img2相加的代码如下:

    Python复制

    result = cv2.add(img1, img2)

    图像加法常用于图像的合成,例如将一个水印图像添加到另一个图像上。此外,图像加法还可以用于调整图像的亮度,通过将图像与一个常数相加来增加或减少图像的亮度。

  • 图像减法:图像减法可以将两个图像或一个图像与一个常数相减。在OpenCV中,可以使用cv2.subtract()函数来实现图像减法。例如,将图像img1减去图像img2的代码如下:

    Python复制

    result = cv2.subtract(img1, img2)

    图像减法常用于图像的背景消除,例如通过减去背景图像来提取前景物体。此外,图像减法还可以用于检测图像之间的差异,例如在视频监控中检测运动物体。

  • 图像乘法:图像乘法可以将两个图像或一个图像与一个常数相乘。在OpenCV中,可以使用cv2.multiply()函数来实现图像乘法。例如,将图像img与常数2相乘的代码如下:

    Python复制

    result = cv2.multiply(img, 2)

    图像乘法常用于图像的对比度增强,通过将图像与一个常数相乘来增加图像的对比度。此外,图像乘法还可以用于图像的融合,例如将两个图像按照一定的比例融合在一起。

  • 图像除法:图像除法可以将两个图像或一个图像与一个常数相除。在OpenCV中,可以使用cv2.divide()函数来实现图像除法。例如,将图像img除以常数2的代码如下:

    Python复制

    result = cv2.divide(img, 2)

    图像除法常用于图像的归一化,例如将图像的像素值归一化到0到1之间。此外,图像除法还可以用于图像的去雾,例如通过将图像除以一个雾的模型来去除图像中的雾。

4.2 图像位运算

图像位运算是对图像像素的二进制位进行操作的运算,包括按位与、按位或、按位异或和按位非等。这些运算可以用于图像的掩膜操作、图像的区域提取等多种应用。

  • 按位与:按位与运算可以将两个图像或一个图像与一个掩膜进行按位与操作。在OpenCV中,可以使用cv2.bitwise_and()函数来实现按位与运算。例如,将图像img与掩膜mask进行按位与运算的代码如下:

    Python复制

    result = cv2.bitwise_and(img, img, mask=mask)

    按位与运算常用于图像的掩膜操作,例如通过一个掩膜来提取图像中的特定区域。此外,按位与运算还可以用于图像的逻辑运算,例如判断两个图像的像素是否同时满足一定的条件。

  • 按位或:按位或运算可以将两个图像或一个图像与一个掩膜进行按位或操作。在OpenCV中,可以使用cv2.bitwise_or()函数来实现按位或运算。例如,将图像img1img2进行按位或运算的代码如下:

    Python复制

    result = cv2.bitwise_or(img1, img2)

    按位或运算常用于图像的合成,例如将两个图像合成在一起。此外,按位或运算还可以用于图像的逻辑运算,例如判断两个图像的像素是否满足至少一个条件。

  • 按位异或:按位异或运算可以将两个图像或一个图像与一个掩膜进行按位异或操作。在OpenCV中,可以使用cv2.bitwise_xor()函数来实现按位异或运算。例如,将图像img1img2进行按位异或运算的代码如下:

    Python复制

    result = cv2.bitwise_xor(img1, img2)

    按位异或运算常用于图像的差异检测,例如检测两个图像之间的差异。此外,按位异或运算还可以用于图像的加密和解密,例如通过一个密钥对图像进行加密和解密。

  • 按位非:按位非运算可以对一个图像进行按位非操作。在OpenCV中,可以使用cv2.bitwise_not()函数来实现按位非运算。例如,对图像img进行按位非运算的代码如下:

    Python复制

    result = cv2.bitwise_not(img)

    按位非运算常用于图像的反相处理,例如将图像的亮部变为暗部,暗部变为亮部。此外,按位非运算还可以用于图像的逻辑运算,例如对图像的像素进行取反操作。

5. 图像格式转换

5.1 Image.open与cv2.imread区别

Image.opencv2.imread 是 Python 中两种常用的图像读取方法,它们分别属于 PIL 库和 OpenCV 库。这两种方法在功能和使用上有一些显著的区别。

  • 返回类型Image.open 返回的是一个 PIL 图像对象,这个对象提供了丰富的图像处理方法,可以直接用于图像的显示、裁剪、旋转等操作。而 cv2.imread 返回的是一个 NumPy 数组,这个数组可以方便地进行像素级的操作和数学计算,适合进行复杂的图像处理算法实现。

  • 颜色通道顺序Image.open 读取的图像是 RGB 格式,即红色、绿色、蓝色通道的顺序。而 cv2.imread 读取的图像是 BGR 格式,即蓝色、绿色、红色通道的顺序。这在进行图像处理时需要注意,因为颜色通道的顺序会影响图像的颜色显示和处理结果。

  • 文件支持格式:PIL 库的 Image.open 支持多种图像文件格式,如 JPEG、PNG、GIF、BMP 等。OpenCV 的 cv2.imread 也支持多种格式,但在某些特殊格式的支持上可能与 PIL 有所不同。例如,PIL 对一些古老的图像格式或特殊的图像编码格式有更好的支持,而 OpenCV 在处理视频帧和实时图像流方面更加强大。

  • 读取效率:在读取图像的速度上,cv2.imread 通常比 Image.open 更快。这是因为 OpenCV 库在底层进行了大量的优化,特别是在处理大型图像和批量图像读取时,cv2.imread 的效率优势更加明显。然而,对于一些简单的图像处理任务,这种速度差异可能并不显著。

5.2 格式相互转换

在实际的图像处理项目中,我们可能需要在 PIL 图像对象和 OpenCV 的 NumPy 数组之间进行转换,以便利用各自库的优势进行图像处理。以下是如何进行这两种格式相互转换的方法。

  • PIL 转 OpenCV

    Python复制

    from PIL import Image
    import numpy as np
    import cv2
    
    # 使用 PIL 读取图像
    pil_image = Image.open('path/to/image.jpg')
    # 将 PIL 图像转换为 OpenCV 的 NumPy 数组
    # 注意:需要将 RGB 格式转换为 BGR 格式
    cv_image = cv2.cvtColor(np.array(pil_image), cv2.COLOR_RGB2BGR)
  • OpenCV 转 PIL

    Python复制

    import cv2
    from PIL import Image
    
    # 使用 OpenCV 读取图像
    cv_image = cv2.imread('path/to/image.jpg')
    # 将 OpenCV 的 NumPy 数组转换为 PIL 图像
    # 注意:需要将 BGR 格式转换为 RGB 格式
    pil_image = Image.fromarray(cv2.cvtColor(cv_image, cv2.COLOR_BGR2RGB))

通过上述转换方法,我们可以在 PIL 和 OpenCV 之间灵活地进行图像格式的转换,从而充分利用两个库的功能,实现更加丰富和高效的图像处理效果。

6. 总结

在本篇研究报告中,我们详细探讨了OpenCV库的多个关键方面,从其基本功能到安装方法,再到基础函数的应用以及图像基本运算,最后讨论了图像格式的转换。以下是对这些内容的总结:

6.1 OpenCV简介

  • 定义与功能:OpenCV是一个开源的计算机视觉和机器学习软件库,拥有超过2500个优化算法,涵盖了图像处理、视频分析、特征提取与匹配、机器学习、计算摄影学、三维重建与增强现实等多个领域。

  • 应用领域:其应用广泛,包括人机互动、物体识别、图像分割、人脸识别、动作识别、运动跟踪、机器人视觉、运动分析、机器视觉、结构分析、汽车安全驾驶等计算机视觉领域,以及图像数据操作、矩阵和向量操作、动态数据结构、基本的GUI功能、图像标注等计算机操作底层技术。

6.2 OpenCV安装方法

  • 直接命令法:通过pip安装opencv-python,简单快捷,但可能面临版本冲突或缺少额外贡献模块的问题。

  • 使用whl文件法:从官网下载对应版本的whl文件后使用pip安装,可精确控制版本,适合需要特定版本或额外功能的用户。

  • Anaconda环境下安装:利用conda或pip在Anaconda环境中安装,便于管理依赖和环境配置,适合数据科学和多环境管理的用户。

6.3 OpenCV基础函数

  • 图像读取与显示:使用cv2.imread()读取图像,cv2.imshow()显示图像,支持多种图像格式和读取模式。

  • 图像保存与复制:通过cv2.imwrite()保存图像,img.copy()复制图像,方便图像的持久化存储和操作备份。

  • 图像颜色空间转换:借助cv2.cvtColor()实现不同颜色空间的转换,如BGR到灰度、HSV等,为图像处理提供灵活性。

6.4 图像基本运算

  • 图像算术运算:包括加法、减法、乘法、除法,用于图像合成、增强、对比度调整等。

  • 图像位运算:涵盖按位与、或、异或、非,适用于图像掩膜、区域提取、差异检测等操作。

6.5 图像格式转换

  • Image.open与cv2.imread区别Image.open返回PIL图像对象,支持RGB格式;cv2.imread返回NumPy数组,采用BGR格式。两者在文件支持格式和读取效率上各有特点。

  • 格式相互转换:提供了PIL到OpenCV和OpenCV到PIL的转换方法,通过颜色空间转换实现格式互转,使用户能够结合两个库的优势进行图像处理。

通过本报告的深入分析,读者可以全面了解OpenCV库的强大功能和应用范围,掌握其安装和使用方法,以及如何通过基础函数和图像运算实现高效的图像处理。同时,对图像格式转换的讨论也为跨库图像处理提供了实用的指导。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LDD3学习9--数据类型和定时器

这部分对应的是第七章和第十一章,因为内容也不是很多,就一起写了。里面的内容基本上就是一个个的点,所以也就一个个点简单总结一下。 1 数据类型 1.1 数据长度 不同操作系统类型长度可能不一样,看图的话最好用u8,u16&…

python http server运行Angular 单页面路由时重定向,解决404问题

问题 当Angular在本地ng server运行时候,可以顺利访问各级路由。 但是运行ng build后,在dist 路径下的打包好的额index.html 必须要在服务器下运行才能加载。 在服务器下我们第一次访问路由页面时是没有问题的,但是尝试刷新页面或手动输入路…

SparkSQL数据源与数据存储

文章目录 1. 大数据分析流程2. Spark SQL数据源2.1 SparkSQL常见数据源2.2 SparkSQL支持的文本格式2.3 加载外部数据源步骤 3. 本地文件系统加载数据3.1 本地文件系统加载JSON格式数据3.1.1 概述3.1.2 案例演示 3.2 本地文件系统加载CSV格式数据3.2.1 概述3.2.2 案例演示 3.3 本…

LLM - 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数(PLM) 教程(2)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145188660 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Scalin…

AI agent 在 6G 网络应用,无人机群控场景

AI agent 在 6G 网络应用,无人机群控场景 随着 6G 时代的临近,融合人工智能成为关键趋势。借鉴 IT 行业 AI Agent 应用范式,提出 6G AI Agent 技术框架,包含多模型融合、定制化 Agent 和插件式环境交互理念,构建了涵盖四层结构的框架。通过各层协同实现自主环境感知等能力…

信息奥赛一本通 1168:大整数加法

这道题是一道大整数加法,涉及到高精度的算法,比如说有两个数要进行相加,1111111111111111111111111111111111111112222222222222222222222222222222,那么如果这两个数很大的话我们常用的数据类型是不能进行计算的,那么…

基于YOLOv4与Tkinter的口罩识别系统

往期精彩 基于YOLOv11的番茄成熟度实时检测系统设计与实现 用YOLOv11检测美国手语:挥动手腕的科技魔法 基于YOLOv11模型PyQt的实时鸡行为检测系统研究 OpenCV与YOLO在人脸识别中的应用研究(论文源码) 计算机视觉:农作物病虫害检测系统:基于Y…

机器学习:监督学习与非监督学习

监督学习是利用带有标签的数据进行训练,模型通过学习输入和输出之间的关系来进行预测。也就是说,数据集中既有输入特征,也有对应的输出标签,模型的目标是找到从输入到输出的映射关系。 而无监督学习则使用没有标签的数据进行训练,模型的任务是发现数据中的内在结构或模式…

【unity进阶篇】不同Unity版本对应的C# 版本和API 兼容级别(Api Compatibility Level)选择

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、…

H3CNE-13-静态路由(二)

1.路由优先级 路由类型DirectOSPFStaticRIP管理距离01060100 2.路由度量 配置示例: 配置接口IP、静态路由(去包、回包) 3.静态路由之路由备份 RTB: ip route-static 192.168.1.0 24 10.0.12.1 ip route-ststic 192.168.1.0 24 20.0.12.1 …

【数据分享】1929-2024年全球站点的逐年平均气温数据(Shp\Excel\无需转发)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据!本次我们为大家带来的就是具体到气象监…

[Qualcomm]Qualcomm MDM9607 SDK代码下载操作说明

登录Qualcomm CreatePoing Qualcomm CreatePointhttps://createpoint.qti.qua

PID控制算法原理,并用python实现演示

PID算法控制运用在哪些地方? PID:比列(Proportion),积分(Integral),微分(Differential) PID算法可以用来控制温度,压强,流量,化学成分,速度等等。汽车的定速巡航;伺服驱…

C语言之文本加密程序设计

🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 文本加密程序设计 摘要:本文设计了一种文本加密程序,旨在提高信息安…

数字图像处理:实验二

任务一: 将不同像素(32、64和256)的原图像放大为像素大 小为1024*1024的图像(图像自选) 要求:1)输出一幅图,该图包含六幅子图,第一排是原图,第 二排是对应放大…

latin1_swedish_ci(latin1 不支持存储中文、日文、韩文等多字节字符)

文章目录 1、SHOW TABLE STATUS WHERE Name batch_version;2、latin1_swedish_ci使用场景注意事项修改字符集和排序规则修改表的字符集和排序规则修改列的字符集和排序规则修改数据库的默认字符集和排序规则 3、ALTER TABLE batch_version CONVERT TO CHARACTER SET utf8mb4 C…

基于微信小程序的安心陪诊管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

如何将自己本地项目开源到github上?

环境: LLMB项目 问题描述: 如何将自己本地项目开源到github上? 解决方案: 步骤 1: 准备本地项目 确保项目整洁 确认所有的文件都在合适的位置,并且项目的 README.md 文件已经完善。检查是否有敏感信息&#xff0…

CSS笔记01

黑马程序员视频地址: 前端Web开发HTML5CSS3移动web视频教程https://www.bilibili.com/video/BV1kM4y127Li?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes 目录 引入方式 CSS特性 继承性 层叠性 优先级 Emmet写法 …

【机器学习】制造业转型:机器学习如何推动工业 4.0 的深度发展

我的个人主页 我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤ 引言 在当今科技飞速发展的时代,制造业正经历着前所未有的变革,工业4.0的浪潮席卷而来。工业4.0旨在通过将…