首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有一种方法可以在比较图像时在opencv中设置阈值?

在OpenCV中比较图像并设置阈值是一种常见的需求,通常用于图像处理和计算机视觉任务。以下是一些基础概念和相关方法:

基础概念

  1. 图像比较:比较两幅图像的相似度或差异。
  2. 阈值:一个数值,用于决定像素是否被认为是前景或背景。

相关方法

OpenCV提供了多种方法来比较图像并设置阈值,以下是一些常用的方法:

1. 绝对差值法(AbsDiff)

计算两幅图像之间的绝对差值,并应用阈值来获取二值图像。

代码语言:txt
复制
import cv2
import numpy as np

# 读取两幅图像
img1 = cv2.imread('image1.jpg', 0)
img2 = cv2.imread('image2.jpg', 0)

# 计算绝对差值
diff = cv2.absdiff(img1, img2)

# 应用阈值
_, thresh = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)

cv2.imshow('Thresholded Difference', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. 结构相似性指数(SSIM)

计算两幅图像的结构相似性指数,并根据阈值判断相似度。

代码语言:txt
复制
from skimage.metrics import structural_similarity as ssim

# 计算SSIM指数
(score, diff) = ssim(img1, img2, full=True)
diff = (diff * 255).astype("uint8")

# 应用阈值
_, thresh = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)

cv2.imshow('SSIM Difference', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

3. 均方误差(MSE)和峰值信噪比(PSNR)

计算两幅图像的均方误差和峰值信噪比,并根据阈值判断相似度。

代码语言:txt
复制
def mse(img1, img2):
    return np.mean((img1 - img2) ** 2)

def psnr(img1, img2):
    mse_value = mse(img1, img2)
    if mse_value == 0:
        return float('inf')
    max_pixel = 255.0
    return 20 * np.log10(max_pixel / np.sqrt(mse_value))

mse_value = mse(img1, img2)
psnr_value = psnr(img1, img2)

print(f'MSE: {mse_value}')
print(f'PSNR: {psnr_value}')

应用场景

  • 图像匹配:在目标检测或跟踪任务中,比较模板图像和目标图像。
  • 变化检测:监控视频流或图像序列中的变化。
  • 质量控制:在工业自动化中检测产品缺陷。

可能遇到的问题及解决方法

  1. 阈值选择不当:如果阈值设置过高,可能会漏掉重要的差异;如果设置过低,可能会引入噪声。
    • 解决方法:可以通过实验找到合适的阈值,或者使用自适应阈值方法。
  • 光照变化影响:光照变化可能导致图像差异增大,影响比较结果。
    • 解决方法:在进行图像比较前,进行光照归一化处理,如直方图均衡化。
  • 噪声干扰:图像中的噪声可能导致误判。
    • 解决方法:在进行阈值处理前,使用滤波器(如高斯滤波)去除噪声。

通过上述方法和注意事项,可以在OpenCV中有效地比较图像并设置合适的阈值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在OpenCV图像识别中连续拍照时自动对焦和拍照。

在拍照时,一定是需要调焦的。一般会在目标位置最清晰的时候会停止对焦。最近在处理OpenCV进行图像识别时,需要连续的调焦(对焦),并在对焦完成后进行拍照,获取图片后进行图像识别。...相机的镜头是一组透镜,当平行于主光轴的光线穿过透镜时,光会聚到一点上,这个点叫做焦点,焦点到透镜中心(即光心)的距离,就称为焦距。焦距固定的镜头,即定焦镜头;焦距可以调节变化的镜头,就是变焦镜头。...(当一束与凸透镜的主轴平行的光穿过凸透镜时,在凸透镜的另一侧会被凸透镜汇聚成一点,这一点叫做焦点,焦点到凸透镜光心的距离就叫这个凸透镜的焦距。一个凸透镜的两侧各有一个焦点。)...定义变量 我们需要一个定时器 Timer,它会每个一段时间执行一个 TimerTask,我们在TimerTask里执行 对焦方法 private final Timer timer; private...触发了 写了一个raiseEvent_OnAutoFocusSuccess 方法,它判断对焦成功后执行,我们可以在这个方法里最自己的实现。

2.5K00

使用Numpy和Opencv完成图像的基本数据分析(Part IV)

OTSU阈值处理是一种简单而有效的全局自动阈值处理方法,用于二值化灰度图像,比如前景(foreground)和背景(background)。...在图像处理中,OTSU阈值处理方法(1979)完全基于对图像直方图执行的计算,该算法假设图像由两个基本类组成——前景和背景。...在OTSU阈值法中,我们找到了最小化内插像素方差的阈值。因此,我们可以不从灰度图像中寻找合适的阈值,而可以在彩色空间中去寻找聚类,通过这样的处理,最终演变为 K-均值聚类技术。...将聚类簇的个数设置为5是为了演示例子,我们同样可以更改群集的数量,通过设置不同的集群数来进行对比实验,以可视化的方式验证具有不同颜色的图像,以最终确定,选择多少的群集数量才是比较合适的。...Canny边缘检测 该方法是一种能够检测图像中宽范围边缘的多级边缘检测操作。

93010
  • 讲解opencv检测黑色区域

    讲解OpenCV检测黑色区域在计算机视觉和图像处理领域,OpenCV是一个强大而广泛使用的开源库,提供了丰富的图像处理和计算机视觉算法。本文将介绍如何使用OpenCV来检测并定位图像中的黑色区域。...可以使用以下命令在Python中安装OpenCV:markdownCopy codepip install opencv-python方法一:使用阈值方法第一种方法是使用阈值方法来检测黑色区域。...最后,根据计算得到的参数,在图像上绘制车道线。在实际应用中,可以通过摄像头持续获取图像,并将该代码嵌入到车辆驾驶辅助系统中,从而实时检测车道线并提供辅助信息给驾驶员。...thresh:阈值,用于将像素值进行二分。根据不同的阈值类型,它可以是一个具体的阈值值或者是一个阈值范围。maxval:设置像素值大于或小于阈值时的输出值。...图像降噪:通过选择合适的阈值,可以去除图像中的噪声,提升图像质量。 需要注意的是,选择合适的阈值对于应用阈值处理非常重要。不同的图像和场景可能需要不同的阈值设置,需要根据具体情况进行调试和优化。

    71410

    手把手教你用Python给小姐姐美个颜

    图像中呈现的不同的颜色都是由R、G、B这3种颜色混合而成的。在OpenCV里面,彩色图像拥有3个颜色通道,但是通道的顺序是可以变换的,RGB、BRG、BGR、GBR、GRB都有可能。...另外也可以直接在读取图像函数imread时设置参数为0,直接将彩色图像读取为灰度图像,img = cv2.imread('1.jpg',0)。...在实际的代码编写中,只需要调用OpenCV中的split()和merge()函数就可以实现图像的通道分离和合并。...调用cvtColor()函数,参数设置为cv2.COLOR_BGR2GRAY。 调用split()函数,可以将一幅彩色图像分离成3个单通道的灰度图像。 那么灰度图像有没有可能转换成彩色图像呢?...▲图3.14 gray2color1.py程序运行结果 上述方法转换的图像颜色很单一。有没有更加智能的方法呢?在摄像技术不是很成熟的时期,人们给拍摄出来的黑白照片上色,发明了一种伪彩色图像技术。

    87810

    精通 Python OpenCV4:第二部分

    图像阈值化是一种简单但有效的图像分割方法,其中,根据像素的强度值对像素进行分割,因此,可以将其用于将图像分割为前景和背景。 在本章中,您将学习阈值技术在计算机视觉项目中的重要性。...请参阅第 1 章,“设置 OpenCV”,以了解如何创建和管理虚拟环境。 阈值技术简介 阈值是一种简单而有效的方法,可将图像划分为前景和背景。...在 OpenCV 中应用自适应阈值设置时,无需设置阈值,这是一件好事。 但是,应正确建立两个参数:blockSize参数和C参数。...另一种方法是使用大津的二值化算法,这在处理双峰图像时是一种很好的方法。 双峰图像可以通过其包含两个峰的直方图来表征。大津的算法通过最大化两类像素之间的方差来自动计算将两个峰分开的最佳阈值。...在本节中,我们将了解如何基于胡矩不变性来匹配轮廓。 OpenCV 提供cv2.matchShapes(),可以使用三种比较方法来比较两个轮廓。 所有这些方法都使用胡矩不变式。

    2.2K10

    二值化算法OTSU源码解析

    概述: 本文中小编将会跟大家分享一下OpenCV3.1.0中图像二值化算法OTSU的基本原理与源代码解析,最终还通过几行代码演示了一下如何使用OTSU算法API实现图像二值化。...一:基本原理 该方法是图像二值化处理常见方法之一,在Matlab与OpenCV中均有实现。...OTSU阈值方法是一种基于寻找合适阈值实现二值化的方法,其最重要的部分是寻找图像二值化阈值,然后根据阈值将图像分为前景(白色)或者背景(黑色)。...上述整个计算步骤与结果是假设阈值T=3时候的结果,同样计算假设阈值为T=0、T=1、T=2、T=4、T=5的类内方差,比较类内方差之间的值,最小类内方差使用的阈值T即为图像二值化的阈值。...上图左边输入RGB图像,右边是基于OTSU产生的二值图像。从OpenCV图像二值化方法OTSU代码实现我们可以看出OpenCV在算法编码实现环节都是从简洁计算入手,考虑效率优先。非常值得我们学习。

    2K91

    【算法随记一】Canny边缘检测算法实现和优化分析。

    在计算梯度幅值和方向时,最开始的Canny算法使用的时2领域,这个计算量要少,但能表达的边缘信息还是不够强烈,所以现在一般都采用Sobel算子的方式,计算处X和Y方向的梯度和幅值,在幅值计算过程中,可以使用...那么这里的实现过程可以和后面的双阈值处理放置在同一个过程中,这样可以多方面提高算法速度,因为,如果当前的幅值小于小的阈值,哪怕他是局部最大值,我们也要舍弃他,所以就根本不用计算他,而在确定某个点是改保留时...在这个过程中,我们可以像OpenCV那样采用简易的判断,把梯度分为[0,22.5],[22.5 67.5],[67.5 90]三个范围,在小于22.5度时,只需比较当前左右两个点的幅值,当大于67.5...另外一种方式就是如下图所示,进行插值比较: ?   这种方式理论上讲更为精确一些,但是带来主要时计算量的增加。...在采用OpenCV方法实现时,前面的幅值计算部分,我们可以考虑不用开平方,因为我们只需要比较大小,平方值大,同样也就代表原始值大,当然这个时候我们需要对用户输入的LowThreshold和HighThreshold

    2.2K10

    来吧,见识科技的力量,无需手动找拍糊的图

    研究好玩又有用的技术第 002 期 不知道大家有没有注意到,手机的垃圾清理软件一般都有一个功能,可以检测出拍摄质量不好的照片,然后提示你是否需要删除。...答案当然是可以的。 ? 1 什么是模糊的图像 首先我们看一幅对比图像(为了保护他人隐私,我在脸部和水印都打码了) ?...详细的技巧可以自行百度。 (3)对焦问题 由于手动对焦或后键对焦时没合焦就按下快门 (4)拍摄对象速度过快 如果拍摄对象比快门速度还快也会导致模糊。 (5)其他原因 如镜头积灰,有划痕等等。...上述内容,仅仅当做科普,下面我们来具体研究和实现一下如何检测模糊图像 2 检测模糊图像的原理 常见的类型 一种是根据已有的图像,来判断现在的图像是否模糊 另一种是在无参考图像的情况下,判断图像是否模糊...今天我们研究比较常见的情况,即无参考图像的情况下对其质量进行评价(是否模糊) 主要思想:(1)先对原图像进行灰度化(2)然后用3x3的拉普拉斯算子进行滤波处理(3)在计算处理后图像的均值和方差,将方差当做模糊检测的阈值选定标准即可

    86000

    【从零学习OpenCV 4】图像二值化

    在OpenCV 4中提供了threshold()和adaptiveThreshold()两个函数用于实现图像的二值化,我们首先介绍threshold()函数的使用方法,该函数的函数原型在代码清单3-17...函数的最后一个参数是选择二值化计算方法的标志,可以选择二值化方法以及控制哪些参数对函数的计算结果产生影响,该标志可以选择的范围及含义在表3-2中给出。...为了更加直观的理解上述阈值比较方法,我们假设图像灰度值是连续变化的信号,将阈值比较方法比做滤波器,绘制连续信号通过滤波器后的信号形状,结果如图3-14所示,图中红线为设置的阈值,黑线为原始信号通过滤波器后的信号形状...图3-14 上述5种阈值比较法的信号示意图 1 04 THRESH_OTSU和THRESH_TRIANGLE 这两种标志是获取阈值的方法,并不是阈值的比较方法的标志,这两个标志可以和前面5种标志一起使用...前面5种标志在调用函数时都需要人为的设置阈值,如果对图像不了解设置的阈值不合理,会对处理后的效果造成严重的影响,这两个标志分别表示利用大津法(OTSU)和三角形法(TRIANGLE)结合图像灰度值分布特性获取二值化的阈值

    98910

    OpenCV的实用图像处理操作案例分享

    以下参数是阈值。第三个参数是我们要分配超出阈值的矩阵元素的值。可以在图3中看到四个不同阈值的影响。在第一张图像(图像1)中,该阈值确定为20.将20之上的所有值分配给255.其余值为设置为0。...图像2和图像3的阈值分别为80和160.最后,在图像4中将阈值确定为200.与图像1不同,白色和非常浅的颜色被指定为255,而所有在图4中将剩余值设置为0。 图像处理中使用的另一种方法是模糊。...当检查图1中的图像以解决此问题时,我们的自动驾驶仪应该能够理解路径和车道。我们可以使用OpenCV解决此问题。由于颜色在此问题中无关紧要,因此图像将转换为黑白。矩阵元素通过确定的阈值设置值0和255。...当找到一个比较高阈值高的值时,确定另一侧并创建边缘。因此,为每个图像和每个问题确定阈值参数值。为了更好地观察高斯模糊效果,让我们做同样的动作而又不模糊这次。...在图14中检查图像时,虚线在某些单词下方清晰可见。

    54830

    OpenCV的实用图像处理操作案例分享

    图3.应用了阈值功能的图像 OpenCV中阈值功能所需的第一个参数是要处理的图像。以下参数是阈值。第三个参数是我们要分配超出阈值的矩阵元素的值。可以在图3中看到四个不同阈值的影响。...图像2和图像3的阈值分别为80和160.最后,在图像4中将阈值确定为200.与图像1不同,白色和非常浅的颜色被指定为255,而所有在图4中将剩余值设置为0。 图像处理中使用的另一种方法是模糊。...当检查图1中的图像以解决此问题时,我们的自动驾驶仪应该能够理解路径和车道。我们可以使用OpenCV解决此问题。由于颜色在此问题中无关紧要,因此图像将转换为黑白。矩阵元素通过确定的阈值设置值0和255。...当找到一个比较高阈值高的值时,确定另一侧并创建边缘。因此,为每个图像和每个问题确定阈值参数值。为了更好地观察高斯模糊效果,让我们做同样的动作而又不模糊这次。...OpenCV也用于此类问题。首先,图像(在图14中)被转换为文本。为此,使用了一种称为Tesseract的光学字符识别引擎[7]。

    97520

    基于OpenCV的实用图像处理操作

    图3.应用了阈值功能的图像 OpenCV中阈值功能所需的第一个参数是要处理的图像。以下参数是阈值。第三个参数是我们要分配超出阈值的矩阵元素的值。可以在图3中看到四个不同阈值的影响。...图像2和图像3的阈值分别为80和160.最后,在图像4中将阈值确定为200.与图像1不同,白色和非常浅的颜色被指定为255,而所有在图4中将剩余值设置为0。 图像处理中使用的另一种方法是模糊。...当检查图1中的图像以解决此问题时,我们的自动驾驶仪应该能够理解路径和车道。我们可以使用OpenCV解决此问题。由于颜色在此问题中无关紧要,因此图像将转换为黑白。矩阵元素通过确定的阈值设置值0和255。...当找到一个比较高阈值高的值时,确定另一侧并创建边缘。因此,为每个图像和每个问题确定阈值参数值。为了更好地观察高斯模糊效果,让我们做同样的动作而又不模糊这次。...OpenCV也用于此类问题。首先,图像(在图14中)被转换为文本。为此,使用了一种称为Tesseract的光学字符识别引擎[7]。

    1.1K22

    CV学习笔记(十四):边缘检测

    一:什么是边缘检测 边缘检测是计算机视觉领域非常重要的一种图像特征提取方法,同样也是比较好用的特征提取方法。...CV学习笔记(十三):图像梯度 - 云时之间的文章 https://zhuanlan.zhihu.com/p/113397988 在目标检测中,Sobel算子对灰度渐变和噪声较多的图像处理效果较好,但是...Sobel算子对边缘定位不是很准确(图像的边缘不止一个像素),因此精度要求不是很高时,Sobel比较常用。...threshold1参数表示设置的低阈值。 threshold2参数表示设置的高阈值,一般设定为低阈值的3倍 (根据Canny算法的推荐)。 edges参数表示输出边缘图像,单通道8位图像。...threshold1参数表示设置的低阈值。 threshold2参数表示设置的高阈值,一般设定为低阈值的3倍 (根据Canny算法的推荐)。 edges参数表示输出边缘图像,单通道8位图像。

    2.2K00

    在OpenCV中基于深度学习的边缘检测

    迟滞阈值化:在下一步中,我们需要决定一个梯度的阈值,低于这个阈值所有的像素都将被抑制(设置为0)。而Canny边缘检测器则采用迟滞阈值法。迟滞阈值法是一种非常简单而有效的方法。...由于在每一层生成的特征图大小不同,它可以有效地以不同的尺度查看图像。 ? 网络结构:整体嵌套边缘检测 HED方法不仅比其他基于深度学习的方法更准确,而且速度也比其他方法快得多。...在OpenCV中训练深度学习边缘检测的代码 OpenCV使用的预训练模型已经在Caffe框架中训练过了,可以这样加载: sh download_pretrained.sh 网络中有一个crop层,默认是没有实现的...swapRB:布尔值,表示我们是否想在3通道图像中交换第一个和最后一个通道。OpenCV默认图像为BGR格式,但如果我们想将此顺序转换为RGB,我们可以将此标志设置为True,这也是默认值。...crop:布尔标志,表示我们是否想居中裁剪图像。如果设置为True,则从中心裁剪输入图像时,较小的尺寸等于相应的尺寸,而其他尺寸等于或大于该尺寸。

    1.9K20

    图像二值化-局部阈值方法汇总

    概述: 在图像处理中二值图像处理与分析是图像处理的重要分支,图像二值分割尤为重要,有时候基于全局阈值自动分割的方法并不能准确的将背景和对象二值化,这个时候就需要使用局部的二值化方法。...常见的图像二值化局部自动阈值的方法有九种,在ImageJ的分支Fiji中已经全部实现,OpenCV中自适应阈值方法也实现了局部阈值的均值法与高斯均值法算法。...均值法在OpenCV中的局部阈值方法中有两种实现,一种是普通均值,另外一种是基于高斯的权重均值方法。...其中K的默认取值为0.2,如果取-0.2将会得到比较暗的二值图像 Otsu 该方法前面有一篇文章已经专门见过,感兴趣读者可以自己搜索【OpenCV学堂】相关文章即可得到!这里不再重复。...OpenCV中也有基于Otsu的全局阈值实现。看这里即可《二值化算法OTSU源码解析》 Phansalkar 该方法对低对比度的图像实现二值化比较管用,计算阈值的公式如下: ?

    8.9K101

    VSLAM系列原创03讲 | 为什么需要ORB特征点均匀化?

    师兄:OpenCV 的 ORB 特征提取方法有个问题,就是特征点往往集中在纹理丰富的区域,而缺乏特征的区域特征点数量会少很多,这会带来不好的影响。比如。。。...因此,ORB-SLAM2 中采用了特征点均匀化的方法来避免特征点过于集中,我们先来看一下同一张图中 ORB-SLAM2 中 ORB 特征点提取结果和 OpenCV 提取结果的对比。...我刚想到一种比较简单的方法:先根据要求提取的特征点数目,先把图像划分成许多小格子,这样得到每个小格子里需要提取的特征点数目,然后在每个小格子里单独提取,最后把这些特征点再汇聚到一起,这样可以吗?...师兄:理论上是可以,但是在实际操作过程中可能会出现一些问题: 很难达到要求的特征点数量。...第3步:对每个格子提取 FAST 角点,如果初始的 FAST 阈值没有检测到角点,就降低 FAST 阈值。这样可以在弱纹理区域也能提取到更多的角点。

    75710

    FAST 角点检测

    不同采样方法构成了不同算法。反正你想一个采样方法那你就创建了一种算法。 特征点匹配。比如我要跟踪某个物体,我肯定是要先从这个物体提取一些特征点。...对通过这步测试的点再继续进行测试(是否有 12 的点符合阈值要求)。这个检测器的效率很高,但是它有如下几条缺点: 当 n时它不会丢弃很多候选点 (获得的候选点比较多)。...高速测试的结果被抛弃 检测到的很多特征点都是连在一起的 前 3 个问题可以通过机器学习的方法解决,最后一个问题可以使用非最大值抑制的方法解决。...算法特点 FAST算法比其他角点检测算法要快 受图像噪声以及设定阈值影响较大 当设置 <12 FAST 不产生多尺度特征,不具备旋转不变性,而且检测到的角点不是最优 Python OpenCV 实现 它被称为...OpenCV中的任何其他特征检测器。

    15110

    边缘检测算子Canny原理概述并利用OpenCV的库函数Canny()对图像进行边缘检测

    具体判断的方法如下: 首先,梯度值的判断是很好判断的,用边缘检测微分算子得到的结果直接比较就可以了,但是最大值的判断可不是只比较其旁边的八个点哦,还要比较另外两个点,详情如下: 如果已经判断出上图中的...上一步对边缘检测算子的结果进行了非极大值抑制,接下来我们用二值化的方法来求解图像边缘。单阈值处理边缘效果不好,所以Cannny算法中采用滞后阈值法求解。...滞后阈值法需要设置一个高阈值和一个低阈值,解后按如下法则进行: 第一,如果某一像素位置的梯度幅值超过高阈值,则像素被保留为边缘像素; 第二,如果某一像素位置的梯度幅值小于低阈值,则像素被排除; 第三,如果某一像素位置的幅值在两个阈值之间...,该像素仅仅在连接到一个高于高阈值的像素时被保留。...在以上的法则中,推荐的高阈值与低阈值比在2:1到3:1之间。 通过消除噪声、计算梯度幅度与方向、非极大值抑制及用滞后阈值算法求解图像边缘四个步骤就可实现Canny边缘检测。

    2.4K20

    OpenCV 滤波与卷积之 —— 边界与阈值化

    本文摘录OpenCV 中的卷积、滤波相关操作内容,重点介绍 Opencv 操作中处理边界卷积与阈值化相关的操作。...边界外推和边界处理 在对图像进行卷积操作时需要处理边界,常用的方法是在卷积真正像素时向外扩展出虚拟数据,之后再进行卷积。在卷积函数的处理过程中为源图像添加虚拟像素是非常必要的。...实际上,在没有公认方法的情况下,我们一般通过自定义的方式在某一场景中处理问题。...(img[:,:,0], 0, 255, cv2.THRESH_OTSU) PIS(res[1]) 2. cv2.adaptiveThreshold() 有一种与之前不同的阈值化方法,这种方法中阈值在整个过程中自动产生变化...在OpenCV中,函数cv2.adaptiveThreshold(),实现了这种方法 官方文档:https://docs.opencv.org/4.5.5/d7/d1b/group__imgproc

    1.4K10

    中文点选验证码之自动识别

    1. opencv的图像模板匹配 第一种方式,使用opencv的图像模板匹配。...模板匹配是一种在较大图像中搜索和查找模板图像位置的方法,opencv2和opencv3中提供了一个专门用于模板匹配的函数matchTemplate()。...它是在输入图像上滑动模板图像(如在2D卷积中),并比较模板图像下的输入图像的模板和补丁。...在OpenCV中实现了六种比较方法(这里用到的是cv2.TM_CCOEFF_NORMED),它返回一个灰度图像,其中每个像素表示该像素的邻域与模板匹配的程度。...点选时发送所选区域中间的坐标即可,这里就不再给出实例了。这种方法虽然简单,但是对于字体不一的就不能很正确的标记出来。 修改生成图片的代码,将mp中的文字的字体设置为随机。修改的代码如下: ?

    5K40
    领券