opencv 图像预处理
图像预处理
在计算机视觉和图像处理领域,图像预处理是一个重要的步骤,它能够提高后续处理(如特征提取、目标检测等)的准确性和效率。OpenCV 提供了许多图像预处理的函数和方法,以下是一些常见的图像预处理操作:
- 图像空间转换
- 图像大小调整
- 图像仿射变换
- 图像翻转
- 图像裁剪
- 图像二值化处理
- 图像去噪
- 边缘检测
- 图像平滑处理
- 图像形态学
图像翻转
cv2.flip 是 OpenCV 库中的一个函数,用于翻转图像。翻转可以是水平翻转、垂直翻转或同时水平和垂直翻转。这个函数接受两个参数:要翻转的图像和一个指定翻转类型的标志。
函数签名
cv2.flip(src, flipCode[, dst]) -> dst
参数说明
-
src:输入图像,可以是任意类型和深度的多通道图像。
-
flipCode
:指定翻转类型的整数标志:
0:沿 X 轴翻转(垂直翻转)1:沿 Y 轴翻转(水平翻转)-1:沿 X 轴和 Y 轴翻转(同时水平和垂直翻转)
-
dst:可选参数,输出图像。如果未提供,输出图像将与输入图像具有相同的尺寸和类型。
示例
以下是一些使用 cv2.flip 的示例代码:
import cv2img = cv2.imread('../images/car.png')# 翻转
# 0:垂直翻转
# 1:水平翻转
# -1:水平垂直翻转
flip_img = cv2.flip(img, -1)
cv2.imshow('img', img)
cv2.imshow('flip_img', flip_img)
cv2.waitKey()
cv2.destroyAllWindows()

图像仿射变换
仿射变换(Affine Transformation)是一种线性变换,它保持了点之间的相对距离不变,即平行线在变换后仍然保持平行。在图像处理中,仿射变换常用于旋转、缩放、平移和剪切等操作。
图像旋转
旋转操作可以将图像绕着某个点旋转一定的角度
实例代码
def cv_affinetransformation():img = cv2.imread('../images/car.png')if img is None:print("Error: Image not found.")return# 获取图像大小(height, width) = img.shape[:2]# 定义旋转中心点center = (width // 2, height // 2)# 旋转角度angle = 60# 计算旋转矩阵m = cv2.getRotationMatrix2D(center, angle, 1.0)# 图像旋转affine = cv2.warpAffine(img, m, (width, height))cv2.imshow('Rotated Image', affine)cv2.waitKey(0)cv2.destroyAllWindows()

cv2.getRotationMatrix2D 是 OpenCV 库中的一个函数,用于获取旋转矩阵。这个函数主要用于图像的旋转变换。旋转矩阵是一个 2x3 的矩阵,可以用来将图像围绕指定的中心点旋转指定的角度,并且可以选择是否进行缩放。
函数签名
cv2.getRotationMatrix2D(center, angle, scale) -> M
参数说明
- center:旋转中心点的坐标,格式为
(x, y)。 - angle:旋转角度,单位为度。正角度表示逆时针旋转,负角度表示顺时针旋转。
- scale:缩放比例。如果设置为 1,则不进行缩放。
返回值
- M:2x3 的旋转矩阵。
示例
以下是一个使用 cv2.getRotationMatrix2D 的示例代码,
cv2.warpAffine 函数
仿射变换 函数
cv2.warpAffine(src, M, dsize, dst) →
- src: 输入图像。
- M: 2x3 的变换矩阵,类型为
np.float32。 - dsize: 输出图像的尺寸,形式为
(width, height)。 - dst (可选): 输出图像。如果未提供,则会自动创建一个新的图像。
图像平移
平移操作可以将图像中的每个点沿着某个方向移动一定的距离
def cv_warpaffine():img = cv2.imread('../images/car.png')if img is None:print("Error: Image not found.")return# 获取图像大小(height, width) = img.shape[:2]# 定义水平和垂直移动的距离tx, ty = 50, 100# 定义平移矩阵t_img = np.float32([[1, 0, tx], [0, 1, ty]])# 应用平移变换w_img = cv2.warpAffine(img, t_img, (width, height))cv2.imshow('Translated Image', w_img)cv2.waitKey(0)cv2.destroyAllWindows()
其中,tx 和 ty 分别表示在x轴和y轴方向上的平移距离。

图像缩放
缩放操作可以改变图像的大小
import cv2
import numpy as np# 读取图像
img = cv2.imread("images/car5.png")
h, w, channels = img.shape
# 定义缩放因子
sx, sy = 1.5, 1.5
M = np.float32([[sx, 0, 0], [0, sy, 0]])
# 应用缩放变换
scaled = cv2.warpAffine(img, M, (int(w * sx), int(h* sy)))
# 显示结果
cv2.imshow('Scaled Image', scaled)
cv2.waitKey(0)
cv2.destroyAllWindows()
sx 和 sy 分别表示在x轴和y轴方向上的缩放因子。

图像剪切
剪切操作可以改变图像的形状,使其在某个方向上倾斜
import cv2
import numpy as np# 读取图像
img = cv2.imread("images/car5.png")
rows, cols, _ = img.shape
# 定义剪切因子
shx, shy = 0.2, 0.2
M = np.float32([[1, shx, 0], [shy, 1, 0]])
# 应用剪切变换
sheared = cv2.warpAffine(img, M, (cols, rows))# 显示结果
cv2.imshow('Sheared Image', sheared)
cv2.waitKey(0)
cv2.destroyAllWindows()
图像色彩空间转换
OpenCV中的色彩空间转换是将图像从一种颜色表示形式转换为另一种颜色表示形式的过程。常见的颜色空间包括RGB、HSV、YUV等。
色彩空间转换有几个重要的作用:
- 方便图像处理:在不同的颜色空间中,对应的通道代表了不同的属性,例如在RGB空间中,红、绿、蓝三个通道分别代表了颜色的强度,而在HSV空间中,H(色相)代表了颜色的种类,S(饱和度)代表了颜色的深浅,V(亮度)代表了颜色的明暗。因此,对于不同的处理需求,选择不同的颜色空间进行处理可以更加方便。
- 提高图像处理效果:在某些情况下,使用某些特定的颜色空间可以提高图像处理的效果。例如,在HSV空间中,可以通过调整S(饱和度)和V(亮度)来提高图像的对比度并去除噪点。
- 节省计算资源:在某些情况下,使用特定的颜色空间可以帮助我们节省计算资源。例如,在RGB空间中,每个像素需要3个通道来表示,而在灰度空间中,每个像素只需要一个通道就可以表示。因此,如果我们只需要处理亮度信息而不需要颜色信息时,将图像转换为灰度空间可以节省计算资源。
总之,色彩空间转换在图像处理中是一项非常重要的技术,它可以方便我们对图像进行处理,并提高图像处理的效果和节省计算资源。
cv2.cvtColor()是OpenCV中的一个函数,用于图像颜色空间的转换。它可以将一个图像从一个颜色空间转换为另一个颜色空间,比如从RGB到灰度图像的转换,或者从BGR到HSV的转换等。
函数的语法如下:
cv2.cvtColor(src, code)
参数说明:
src:输入图像,可以是一个NumPy数组或者一个OpenCV的Mat对象。code:指定转换的类型,可以使用预定义的转换代码,例如cv2.COLOR_BGR2GRAY表示从BGR到灰度图像的转换。
RGB 转 Gray(灰度)
RGB 转 Gray(灰度),将彩色图像转换为灰度图像,可以减少数据量并简化算法。
def cv_color():img = cv2.imread('../images/p1.png')# 图像色彩空间转换gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰度图像# gray = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # HSV颜色空间cv2.imshow('img', img)cv2.imshow('gray', gray)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == '__main__':cv_color()

RGB 转 HSV
RGB 转 HSV,HSV(Hue, Saturation, Value)色彩空间在颜色分割和颜色识别中非常有用。
def cv_color():img = cv2.imread('../images/p1.png')# 图像色彩空间转换# gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 灰度图像gray = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # HSV颜色空间cv2.imshow('img', img)cv2.imshow('gray', gray)cv2.waitKey(0)cv2.destroyAllWindows()

图像二值化处理
案例:
def binaryzation():img = cv2.imread('../images/p1.png')g_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化# ret:实际应用阈值# binary:二值化后的图像ret, binary = cv2.threshold(g_img, 150, 230, cv2.THRESH_BINARY)cv2.imshow('binary', binary)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == '__main__':binaryzation()

cv2.threshold 是 OpenCV 中用于图像二值化的函数。它通过设置阈值将图像分为前景和背景,常用于图像处理和分析。以下是该函数的主要功能和用法简介:
功能
cv2.threshold 将灰度图像转换为二值图像,根据指定的阈值将像素值分为两类:高于阈值的像素设为一个值(通常是255),低于阈值的像素设为另一个值(通常是0)。
语法
retval, dst = cv2.threshold(src, thresh, maxval, type)
参数
-
src: 输入的灰度图像。
-
thresh: 阈值,决定分割的界限。
-
maxval: 当像素值超过阈值时,赋予的最大值(通常为255)。
-
- type
- 阈值类型,常用的有:
cv2.THRESH_BINARY: 超过阈值的像素设为最大值,其余设为0。cv2.THRESH_BINARY_INV: 超过阈值的像素设为0,其余设为最大值。cv2.THRESH_TRUNC: 超过阈值的像素设为阈值,其余不变。cv2.THRESH_TOZERO: 超过阈值的像素不变,其余设为0。cv2.THRESH_TOZERO_INV: 超过阈值的像素设为0,其余不变。
返回值
- retval: 实际使用的阈值(可能与输入值不同)。
- dst: 输出的二值图像。
图像掩模
它通常用于创建掩模,以便从图像中提取特定颜色的区域。
函数原型
cv2.inRange(src, lowerb, upperb)
参数
- src: 输入的图像,可以是彩色图像或灰度图像。
- lowerb: 颜色范围的下界(数组或元组),指定了要提取的颜色的最小值。
- upperb: 颜色范围的上界(数组或元组),指定了要提取的颜色的最大值。
返回值
- 返回一个二值图像,白色部分表示在指定颜色范围内的区域,黑色部分表示不在范围内的区域
图像位与操作
cv2.bitwise_and() 是 OpenCV 库中的一个函数,用于对两个图像进行按位与操作。这个操作会逐个像素地对两个输入图像进行比较,只有在两个像素均为 255(白色)时,输出的像素才会为 255(白色),否则输出为 0(黑色)。这个函数在图像处理中的应用非常广泛,尤其是在掩膜和图像分割等任务中
函数原型
dst = cv2.bitwise_and(src1, src2, mask=None)
参数说明
src1: 第一个输入图像。src2: 第二个输入图像。两幅图像应具有相同的尺寸和类型。mask: 可选参数,用于指定一个掩膜。如果提供,只有在掩膜的相应位置为非零时,才会计算输出。
返回值
- 返回按位与操作后的图像(
dst)。
图像检测轮廓
cv2.findContours 函数可以在二值图像中找到轮廓,并返回轮廓的点集。轮廓可以用来表示物体的边界,常用于物体检测、分割和形状分析。
语法
contours, hierarchy = cv2.findContours(image, mode, method)
参数
-
image: 输入的二值图像。通常在调用该函数之前需要将图像转换为灰度图像并进行二值化处理(如使用
cv2.threshold或cv2.Canny)。 -
- mode
- 轮廓检索模式:
cv2.RETR_EXTERNAL: 只检索外部轮廓。cv2.RETR_LIST: 检索所有轮廓,并将其放入列表中。cv2.RETR_TREE: 检索所有轮廓,并建立层级关系。
-
- method
- 轮廓逼近方法:
cv2.CHAIN_APPROX_SIMPLE: 压缩轮廓,仅保留端点。cv2.CHAIN_APPROX_NONE: 保留所有轮廓点。
返回值
- contours: 一个 Python 列表,其中每个元素是一个轮廓(即一组点),轮廓的点以 NumPy 数组的形式存储。
- hierarchy: 轮廓的层级信息,包含轮廓之间的关系。
cv2.boundingRect 函数介绍
cv2.boundingRect 是 OpenCV 中用于计算轮廓的最小外接矩形的函数。这个函数可以返回一个包含轮廓的最小矩形的边界框,通常用于对象检测、图像分割等任务中。最小外接矩形是一个完全包围轮廓的矩形,其边与图像的坐标轴平行。
案例
import cv2
import numpy as np
import paddlehub as hubqie_img = Nonedef find_contours():global qie_imgimg = cv2.imread("../images/car.png")hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)# HSV颜色空间中,蓝色对应的颜色范围lower_blue = np.array([100, 100, 100])upper_blue = np.array([140, 255, 255])# 创建掩膜# 在HSV空间中,将颜色范围限定在lower_blue和upper_blue之间mask = cv2.inRange(hsv, lower_blue, upper_blue)# # 转换成灰度图像# gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 二值化处理ret, binary = cv2.threshold(mask, 120, 255, cv2.THRESH_BINARY)# 获取图片轮廓contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# num = len(contours)# print("轮廓数量:", num)for i in contours:x, y, w, h = cv2.boundingRect(i)# 画矩形if w > 100 and h > 45:cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2)qie_img = img[y:y + h, x:x + w]cv2.imshow("qie_img", qie_img)# 识别车牌信息# 加载模型ocr = hub.Module(name="chinese_ocr_db_crnn_server")# 识别文本result = ocr.recognize_text(images=[qie_img])for i in result:data = i['data']for j in data:print('车牌号是:', j['text'])cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == '__main__':find_contours()"""
根据识别到的车牌,将车牌识别出来
"""
相关文章:
opencv 图像预处理
图像预处理 在计算机视觉和图像处理领域,图像预处理是一个重要的步骤,它能够提高后续处理(如特征提取、目标检测等)的准确性和效率。OpenCV 提供了许多图像预处理的函数和方法,以下是一些常见的图像预处理操作&…...
SAP B1 功能模块字段介绍 - 价格清单(下)
目录 背景 五、业务伙伴的特殊价格 1. 单据逻辑功能 2. 部分字段解释 3. 操作流程 3.1 时间相关 3.2 数量相关 4. 实例 六、复制特殊价格到选择标准 1. 单据逻辑功能 2. 部分字段解释 七、全局更新特殊价格 编辑 1. 单据逻辑功能 2. 部分字段解释 八、价格更…...
传智杯 第六届-复赛-D
题目描述: 小红定义两个字符串同构,当且仅当对于i∈[1,n],b[i]−a[i]i∈[1,n],b[i]-a[i]i∈[1,n],b[i]−a[i]是定值。例如,"bacd"和"edfg"是同构的。 现在小红拿到了一个长度为n的字符串a,她想知道&a…...
Java - 数组实现大顶堆
题目描述 实现思路 要实现一个堆,我们首先要了解堆的概念。 堆是一种完全二叉树,分为大顶堆和小顶堆。 大顶堆:每个节点的值都大于或等于其子节点的值。 小顶堆:每个节点的值都小于或等于其子节点的值。 完全二叉树ÿ…...
ifuse挂载后,在python代码中访问iOS沙盒目录获取app日志
上一次使用pymobiledevice3,在python代码中访问app的沙盒目录并分析业务日志,在使用过程中发现,在获取app日志的时候速度很慢,执行时间很长,需要30-61秒,所以这次尝试使用libimobiledevic和ifuse࿰…...
Windows WSL环境下安装 pytorch +ROCM 支持AMD显卡
官方文档:Install PyTorch for ROCm — Use ROCm on Radeon GPUs 一、操作系统及驱动 windows 下安装WSL 环境( windows subsystem for Linux), 安装ubuntu 22.04环境。 安装 rocm 软件包: sudo apt update wget https://repo.radeon.com/amdgpu-insta…...
uniapp中skymap.html(8100端口)提示未登录的排查与解决方法
问题: 目前账号已经登录,uniapp的其他端口均可以访问到数据,唯独skymap.html中的8100会提示未登录。(8100是后端网关gateway端口) 分析: 在 skymap.html 中遇到未登录提示的问题,通常是由于该…...
训练模型时梯度出现NAN或者INF(禁用amp的不同level)
判断参数梯度位nan或inf的代码: for name, param in model.named_parameters():if param.grad is not None:if torch.isnan(param.grad).any() or torch.isinf(param.grad).any():print(f"grad layer [{name}] is NaN or Inf") 首先来说可能得原因&…...
Maven核心概念
一、项目对象模型(POM) 1. 定义 POM(Project Object Model)是 Maven 项目的核心配置文件,它以 XML 格式描述了项目的基本信息、项目依赖、构建配置等。可以说,POM 是 Maven 理解和处理项目的基础。 2. 基…...
Sonatype Nexus 部署手册
文章目录 一、前言二、软件环境2.1 版本变更:2.1.1 变更存储的原因2.2.2 H2作为存储的注意点 三、资源配置四、开始部署4.1 部署jdk174.2 离线部署nexus4.2.1 下载4.2.2 部署1. 上传到服务器2. 解压3. 添加用户4. 修改启动参数5. 迁移sonatype-work ,并授…...
TLV320AIC3104IRHBR 数据手册 一款低功耗立体声音频编解码器 立体声耳机放大器芯片麦克风
TLV320AIC3104 是一款低功耗立体声音频编解码器,具有立体声耳机放大器以及在单端或全差分配置下可编程的多个输入和输出。该器件包括基于寄存器的全面电源控制,可实现立体声 48kHz DAC 回放,在 3.3V 模拟电源电压下的功耗低至 14mW࿰…...
(8)结构体、共用体和枚举类型数据
1. 结构体、共用体的定义及区别,typedef 定义别名 结构体的定义 结构体是一种用户自定义的数据类型,它可以将不同类型的数据组合在一起。例如,定义一个表示学生信息的结构体: // 定义结构体类型 struct Student struct Student {char name[20];int age;float score; };共…...
Jedis操作和springboot整合redis
Jedis-springboot整合redis Jedis 引入jedis依赖 注意事项 测试相关数据类型 Key String List set hash zset 案例 spring boot整合redis 引入相关依赖 在application.properties中配置redis 配置 创建redis配置类 创建测试类 Jedis 引入jedis依赖 <depen…...
基于AI大模型的复杂扫描件PDF信息提取与规整
前言 场景大致是会上传一个几十页的扫描件PDF,让AI在当中找出我需要的字段,本文会隐去具体行业信息和具体的AI提示词内容,只分享技术相关内容,请见谅。 AI模型选择 针对我们行业的使用场景,我主要测试了GPT、Claude以…...
为什么https先非对称加密,然后对称加密?
HTTPS之所以先使用非对称加密,然后在对称加密,主要是基于两者在加密效率与安全性方面的特性考虑。 首先,非对称加密具有极高的安全性,因为它使用了公钥和私钥这一对密钥。公钥是公开的,任何人都可以使用它来加密数据&…...
【Coroutines】Full Understanding of Kotlinx.Corutines Framework
文章目录 What is CorutinesDifference between Corutine and ThreadFast UsageSuspend FunctionAdvanced Usage of CoroutineCoroutine EssentialsCoroutineContextCoroutineScopePredefined CoroutineScopePredefined DispatchersPredefined CoroutineStartJobCreate a Corou…...
Python面向对象,实现图片处理案例,支持:高斯模糊、Canny边缘检测、反转边缘图像、生成手绘效果、调亮度......等等
实验图片如下: 命名为img1.jpg, 放在项目下新建文件夹images下 项目构造如下: app.py源码如下 import cv2 import os from matplotlib import pyplot as plt import numpy as npclass ImageProcessor:def __init__(self, image_path):self.image cv…...
SOLID - 依赖倒置原则(Dependency Inversion Principle)
SOLID - 依赖倒置原则(Dependency Inversion Principle) 定义 依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象设计中的五大基本原则之一,通常缩写为SOLID中的D。DIP由Robert C. Martin提出&…...
【.NET 8 实战--孢子记账--从单体到微服务】--需求拆分与规划
在上一篇文章中我们收集了需求,并对需求进行了简单的分析和规划,但是对于开发人员来说,上一篇文章的需求还不够详细,并且没有形成计划。因此本篇文章将带领大家来拆分需求并规划开发里程碑。 一、详细需求列表 项目组进行了多次…...
在macOS的多任务处理环境中,如何平衡应用的性能与用户体验?这是否是一个复杂的优化问题?如何优化用户体验|多任务处理|用户体验|应用设计
目录 一 多任务处理与应用性能 1. macOS中的多任务处理机制 2. 性能优化的基本策略 二 用户体验的关键要素 1. 响应速度 2. 界面友好性 3. 功能的直观性 三 平衡性能与用户体验的策略 1. 资源管理 2. 优化数据加载 3. 使用合适的线程模型 4. 实时监测和调整 四 使…...
GRS认证实操干货:TC交易证书全流程解析(源头供应商必看)
一、前言:GRS证书与TC的核心关联(新手必懂)在再生行业GRS认证体系中,多数源头供应商存在一个核心认知误区:认为拿到GRS范围证书(SC)就完成了合规闭环,实则不然。GRS证书(…...
三千年的欲望、痕迹与自感:资本批判与伦理中间件
三千年的欲望、痕迹与自感:资本批判与伦理中间件岐金兰 丙午神农---引言:被命名的与未命名的在人类文明的长河中,有一个东西从未缺席,却长期被剥夺了命名的权利。它比语言更古老,比理性更顽强,比任何社会制…...
drm_gpusvm 与 drm_pagemap 执行顺序分析
概述 在 SVM(Shared Virtual Memory)实现中,drm_gpusvm 和 drm_pagemap 分属两个不同的抽象层,协同完成 GPU 对进程虚拟地址空间的共享访问。两者的执行顺序并非固定的"先底层后上层",而是根据操作场景有不同…...
如何5分钟快速部署Akagi雀魂AI助手:专业实战配置完整指南
如何5分钟快速部署Akagi雀魂AI助手:专业实战配置完整指南 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Am…...
高效微信聊天记录管理:解决数据丢失风险的本地化方案
高效微信聊天记录管理:解决数据丢失风险的本地化方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChat…...
重新定义AI时代的敏态与稳态:ArkClaw与HiAgent的双轮进化
4月2日,2026火山引擎AI创新巡展・武汉站正式启幕。火山引擎总裁谭待在宣布截至2026年3月,豆包大模型日均Token使用量突破120万亿,三个月翻倍、较2024年5月豆包问世增长了1000倍的同时,提出了以ArkClaw为敏态Agent、HiAgent为稳态A…...
FIFA 23 Live Editor终极指南:10分钟掌握实时游戏修改技巧
FIFA 23 Live Editor终极指南:10分钟掌握实时游戏修改技巧 【免费下载链接】FIFA-23-Live-Editor FIFA 23 Live Editor 项目地址: https://gitcode.com/gh_mirrors/fi/FIFA-23-Live-Editor FIFA 23 Live Editor 是一款专为FIFA 23玩家设计的革命性实时编辑工…...
惯性导航解算及误差分析
目录 1.连续时间下三维运动的微分性质 1.1 旋转矩阵的微分方程 1.2 四元数的微分方程 1.3 旋转向量的微分方程 2.惯性导航解算 2.1 姿态更新 2.2 速度更新 2.3 位置更新 3.惯性导航误差分析 3.1 姿态误差微分方程 3.2 速度误差微分方程 3.3 位置误差方程 3.4 bias…...
docker零基础入门:用快马ai生成带详细注释的容器化示例项目
最近在学习Docker技术,发现对于新手来说,从零开始配置容器环境确实会遇到不少坑。好在发现了InsCode(快马)平台,它提供的AI辅助功能可以快速生成带详细注释的Docker示例项目,特别适合像我这样的初学者。下面分享下我的学习过程&am…...
安规标准考核题库-2(IEC 62477-1:2012+AMD1:2022 )
本题库严格对标 IEC 62477-1:2012《电力电子变换器系统和设备安全要求 第 1 部分:总则》AMD1:2022 修订版,贴合储能双向 PCS 的设计、测试、认证全流程场景,分为判断题、单选题、多选题三类,所有题目均附标准条款依据与详细解答。…...
