OpenCV Python灰度图像转伪彩色图像详细代码

时间: 2023-07-16 14:15:49 浏览: 76
将灰度图像转换为伪彩色图像可以增加图像的可视化效果。下面是使用OpenCV Python库将灰度图像转换为伪彩色图像的详细代码: ```python import cv2 import numpy as np # 读取灰度图像 gray_img = cv2.imread('gray_image.png', cv2.IMREAD_GRAYSCALE) # 转换灰度图像为伪彩色图像 color_map = cv2.applyColorMap(gray_img, cv2.COLORMAP_JET) # 显示伪彩色图像 cv2.imshow('Pseudo-colored Image', color_map) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个例子中,我们首先使用 `cv2.imread()` 函数读取灰度图像,然后使用 `cv2.applyColorMap()` 函数将灰度图像转换为伪彩色图像。`cv2.applyColorMap()` 函数需要两个参数:第一个参数是灰度图像,第二个参数是OpenCV提供的伪彩色图像映射表。在这个例子中,我们使用的是 `cv2.COLORMAP_JET` 映射表,它将灰度值转换为蓝、绿、红三种颜色。最后,我们使用 `cv2.imshow()` 函数显示伪彩色图像,并使用 `cv2.waitKey()` 函数等待用户按下任意键关闭窗口。 注意:在实际使用时,应该根据灰度图像的特点选择合适的伪彩色图像映射表,以达到最佳的可视化效果。
相关问题

OpenCV Python灰度图像转伪彩色图像代码

下面是一个将灰度图像转换为伪彩色图像的简单代码示例: ```python import cv2 import numpy as np # 读取灰度图像 img_gray = cv2.imread('gray_image.jpg', 0) # 将灰度图像应用伪彩色映射 img_color = cv2.applyColorMap(img_gray, cv2.COLORMAP_JET) # 显示伪彩色图像 cv2.imshow('Pseudocolor Image', img_color) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个示例中,我们首先使用 `cv2.imread` 函数读取灰度图像。然后,我们使用 `cv2.applyColorMap` 函数将伪彩色映射应用于灰度图像。最后,我们使用 `cv2.imshow` 函数将伪彩色图像显示出来。 注意,这个示例中使用的伪彩色映射是 `cv2.COLORMAP_JET`。还有很多其他的伪彩色映射可供选择,你可以根据自己的需求选择合适的映射。

OpenCV Python灰度图像转伪彩色图像的实验步骤

灰度图像转伪彩色图像可以通过伪彩色映射实现。OpenCV是一个功能强大的计算机视觉库,可以用Python语言来使用它。下面是使用OpenCV Python将灰度图像转换为伪彩色图像的实验步骤: 1. 导入必要的库 在开始之前,需要首先导入OpenCV和NumPy库。 ```python import cv2 import numpy as np ``` 2. 读取灰度图像 使用OpenCV的imread()函数读取灰度图像。在这个实验中,我们将使用一张名为lena.jpg的灰度图像。 ```python gray_img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE) ``` 3. 创建伪彩色映射表 创建伪彩色映射表需要使用NumPy库。首先,创建一个空的三通道图像,然后使用NumPy的arange()函数生成从0到255的等差数列,最后将这些数值按照需求分配给三个通道。 ```python # 创建一个空的三通道图像 color_map = np.zeros((256, 1, 3), dtype=np.uint8) # 使用NumPy的arange()函数生成从0到255的等差数列 colors = np.arange(0, 256, 1).astype(np.uint8) # 将这些数值按照需求分配给三个通道 color_map[:, 0, 0] = colors # 蓝色通道 color_map[:, 0, 1] = 255 - colors # 绿色通道 color_map[:, 0, 2] = np.minimum(colors * 2, 255) # 红色通道 ``` 4. 进行伪彩色映射 使用OpenCV的LUT函数执行伪彩色映射。LUT是Look-Up Table(查找表)的缩写,它接受两个参数:输入图像和查找表。在这个实验中,输入图像是灰度图像,查找表是color_map。 ```python # 执行伪彩色映射 pseudo_color_img = cv2.LUT(gray_img, color_map) ``` 5. 显示结果 使用OpenCV的imshow()函数显示结果。 ```python # 显示结果 cv2.imshow('Pseudo Color Image', pseudo_color_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 完整代码如下: ```python import cv2 import numpy as np # 读取灰度图像 gray_img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE) # 创建伪彩色映射表 color_map = np.zeros((256, 1, 3), dtype=np.uint8) colors = np.arange(0, 256, 1).astype(np.uint8) color_map[:, 0, 0] = colors color_map[:, 0, 1] = 255 - colors color_map[:, 0, 2] = np.minimum(colors * 2, 255) # 进行伪彩色映射 pseudo_color_img = cv2.LUT(gray_img, color_map) # 显示结果 cv2.imshow('Pseudo Color Image', pseudo_color_img) cv2.waitKey(0) cv2.destroyAllWindows() ```

相关推荐

### 回答1: 将灰度图像转换为彩色图像需要使用颜色映射技术。在Python中,我们可以使用OpenCV库来实现这一过程。 首先,使用OpenCV库加载灰度图像并将其转换为彩色图像。可以使用cv2.imread()函数来读取灰度图像文件。将灰度图像传递给cv2.applyColorMap()函数,该函数将应用到灰度图像上的颜色映射。 我们可以使用以下代码将灰度图像转换为彩色图像: import cv2 # Load grayscale image gray_image = cv2.imread('grayscale_image.png', cv2.IMREAD_GRAYSCALE) # Apply color map to grayscale image colored_image = cv2.applyColorMap(gray_image, cv2.COLORMAP_JET) # Display the colored image cv2.imshow('Colored Image', colored_image) cv2.waitKey(0) cv2.destroyAllWindows() 在上面的代码中,cv2.applyColorMap()函数使用cv2.COLORMAP_JET参数将灰度图像转换为彩色图像。还有其他颜色映射选项,例如cv2.COLORMAP_AUTUMN、cv2.COLORMAP_BONE等等。 最后,在使用cv2.imshow()函数显示彩色图像之前,我们可以使用cv2.imwrite()函数将其保存为图像文件。 这就是将灰度图像转换为彩色图像的Python实现方法。 ### 回答2: 1. 理论基础 灰度图片每个像素点的灰度值表示了它的亮度。彩色图片则由红绿蓝三个通道组成,每个像素点的颜色由三个通道的数值组成。因此,将灰度图片转化为彩色图片,需要为每个像素点确定一种颜色,即分配三个通道的数值。 2. 方法一:基于色相、饱和度和明度的转换 由于灰度图像只有明度通道,没有饱和度和色相通道,因此可以使用一个常量色相和饱和度的值,将灰度值映射到明度通道。具体的映射函数如下: r = g = b = gray_value h, s, v = constant_hue, constant_saturation, gray_value r, g, b = hsv_to_rgb(h, s, v) 其中,gray_value表示像素点的灰度值,constant_hue和constant_saturation是色相和饱和度常量,hsv_to_rgb是将色相、饱和度、明度值转化为RGB颜色的函数。 通过这种方法,灰度图片可以变得具有颜色,但是颜色不够丰富,因为所有颜色都是由相同的色相和饱和度组成的。 3. 方法二:基于颜色映射表的转换 另一种方法是使用颜色映射表。颜色映射表是一种关联了灰度值和颜色的表格。可以使用以下步骤将灰度图形变为彩色图像: (1) 创建颜色映射表,将灰度值与颜色值关联起来。 (2) 将灰度图片中的每个像素点的灰度值与颜色映射表中的颜色值对应起来。 (3) 将彩色像素点替换灰度像素点,形成彩色图像。 颜色映射表可以使用手动设计或者基于数据训练的方法得到。基于数据的方法可以使用机器学习技术,如卷积神经网络(CNN),学习颜色映射表,并将其应用于灰度图像。这种方法可以得到更加准确和丰富的彩色图像。 综上所述,将灰度图像转换为彩色图像可以使用两种方法:基于色相、饱和度和明度的转换和基于颜色映射表的转换。每种方法都有其优缺点,需要根据需求来选择不同的方法。 ### 回答3: 在计算机图像处理中,有很多方法可以将灰度图像转换为彩色图像。其中一种常用的方法是使用伪彩色或颜色映射技术。本文将介绍如何使用Python实现将灰度图像转换为彩色图像的过程。 颜色映射技术是一种将灰度值映射到特定颜色的过程。为了将灰度图像变为彩色图像,我们需要定义一种映射方式,将每个灰度值映射到相应的RGB颜色值。 首先,我们需要导入Python中的PIL库,PIL是Python Imaging Library的缩写,它是Python中处理图像的常用库。 from PIL import Image 然后,我们需要打开一张灰度图像,使用PIL库中的Image模块来打开灰度图像。 image_gray = Image.open("test_gray.jpg") 为了获得彩色图像,我们需要创建一个与灰度图像相同大小的空白RGB图像,使用PIL库中的Image模块创建。 image_color = Image.new("RGB", image_gray.size) 接下来,我们需要设计一种映射方式。假设我们将灰度值为0映射为红色,灰度值为255映射为蓝色。这样就可以将每个像素的灰度值与RGB值进行映射。 def color_map(gray_value): if gray_value < 128: return (255, 0, 0) # 映射为红色 else: return (0, 0, 255) # 映射为蓝色 最后,我们需要将映射后的RGB值在空白图像中填充到像素中,使用PIL库中的ImageDraw模块即可。 from PIL import ImageDraw draw = ImageDraw.Draw(image_color) width, height = image_color.size for x in range(width): for y in range(height): gray_value = image_gray.getpixel((x, y)) color_value = color_map(gray_value) draw.point([x, y], color_value) 最后,我们将生成的彩色图像保存到本地文件中。 image_color.save("test_color.jpg") 这样,我们就可以使用Python实现将灰度图像变为彩色图像的过程。相信读者在实践中一定能够更加深入地理解和掌握这种技术。
根据灰度分布来改写伪彩色的映射范围可以通过以下步骤实现: 1. 读取图像并转换为灰度图像。 2. 计算灰度值的直方图,并根据直方图得到灰度值的分布情况。 3. 根据灰度值的分布情况调整伪彩色映射范围,以使得不同灰度值之间的差异更加明显。 4. 将调整后的伪彩色映射范围应用到彩色图像上,并输出结果。 下面给出一个简单的Python代码示例: python import cv2 import numpy as np # 读入图像并转换为灰度图像 img = cv2.imread('image.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 计算灰度直方图 hist, bins = np.histogram(gray, 256, [0, 256]) # 根据灰度值的分布情况调整伪彩色映射范围 min_gray = np.argwhere(hist > 0)[0][0] max_gray = np.argwhere(hist > 0)[-1][0] color_map = cv2.applyColorMap(np.arange(256, dtype=np.uint8), cv2.COLORMAP_JET) color_map = color_map[min_gray:max_gray] # 将调整后的伪彩色映射范围应用到彩色图像上 color = cv2.LUT(gray, color_map) # 输出结果 cv2.imshow('Original', img) cv2.imshow('Gray', gray) cv2.imshow('Color', color) cv2.waitKey(0) cv2.destroyAllWindows() 在这个示例中,我们首先读入一张彩色图像,并将其转换为灰度图像。然后,我们计算了灰度直方图,并根据直方图得到了灰度值的分布情况。接下来,我们调整了伪彩色映射范围,以使得不同灰度值之间的差异更加明显。最后,我们将调整后的伪彩色映射范围应用到彩色图像上,并输出了结果。
OpenCV提供了一些方法来实现图像的伪彩色处理。伪彩色是一种将灰度图像转换为彩色图像的技术,通过给不同灰度级别分配不同的颜色,增强图像的可视化效果。 下面是一种常见的实现伪彩色的方法: 1. 使用applyColorMap函数:OpenCV的applyColorMap函数可以通过将灰度图像映射到一个颜色表来实现伪彩色。这个函数接受两个参数:灰度图像和颜色表。其中,颜色表可以是预定义的OpenCV颜色映射,如cv2.COLORMAP_JET、cv2.COLORMAP_HSV等,也可以是自定义的颜色映射。 以下是一个示例代码,演示如何使用applyColorMap函数实现伪彩色处理: python import cv2 # 读取灰度图像 gray_image = cv2.imread("gray_image.jpg", 0) # 应用颜色映射 color_image = cv2.applyColorMap(gray_image, cv2.COLORMAP_JET) # 显示结果 cv2.imshow("Color Image", color_image) cv2.waitKey(0) cv2.destroyAllWindows() 在上面的示例中,我们首先读取了一个灰度图像,然后使用applyColorMap函数将其转换为伪彩色图像,并使用imshow函数显示结果。 2. 自定义伪彩色映射:除了使用预定义的颜色表,还可以自定义伪彩色映射。这可以通过创建一个自定义的颜色表(Lookup Table)来实现,然后使用OpenCV的LUT函数将灰度图像映射到颜色表。 以下是一个示例代码,演示如何自定义伪彩色映射: python import cv2 import numpy as np # 创建自定义颜色表 color_map = np.zeros((256, 1, 3), dtype=np.uint8) color_map[:, 0, 2] = np.arange(256) # 在红色通道上设置灰度值 color_map[:, 0, 1] = 255 - np.arange(256) # 在绿色通道上设置反向灰度值 # 读取灰度图像 gray_image = cv2.imread("gray_image.jpg", 0) # 应用自定义颜色映射 color_image = cv2.LUT(gray_image, color_map) # 显示结果 cv2.imshow("Color Image", color_image) cv2.waitKey(0) cv2.destroyAllWindows() 在上面的示例中,我们创建了一个自定义的颜色表,其中红色通道与输入灰度值相对应,绿色通道与反向灰度值相对应,蓝色通道未使用。然后,我们使用LUT函数将灰度图像映射到自定义的颜色表,最后使用imshow函数显示结果。 这只是伪彩色处理的两种常见方法,OpenCV还提供了其他方法和技术。具体选择哪种方法取决于你的应用需求和个人偏好。
ChatGPT: 对于第一个问题,可以使用Python中的OpenCV库来实现。首先读取图像,然后使用cv2.cvtColor()函数将彩色图像转换为灰度图像,并使用cv2.imshow()函数显示图像。如果输入的是灰度图像,则可以使用cv2.cvtColor()函数将其转换为彩色图像,并使用cv2.imshow()函数显示图像。对于伪彩色处理,可以使用cv2.applyColorMap()函数实现。 对于第二个问题,可以使用Python中的OpenCV库来实现。对于图像算术运算,可以使用cv2.add()、cv2.subtract()、cv2.multiply()和cv2.divide()函数实现。对于灰度图像的几何运算,可以使用cv2.warpAffine()函数实现平移、旋转、放大和缩小。对于灰度变换,可以使用cv2.LUT()函数实现灰度变换函数,例如对比度、灰度求反、图像的均衡化等。对于彩色图像的三通道读取和显示,可以使用cv2.split()函数将图像分离为三个通道,并使用cv2.merge()函数将三个通道合并为彩色图像。 对于第三个问题,可以使用Python中的OpenCV库来实现。对于图像模板处理,可以使用cv2.filter2D()函数实现不同类型的模板处理,例如均值滤波、中值滤波、Sobel算子、Roberts算子、Prewwit算子和Laplace算子等。对于自定义处理模板,可以使用numpy数组来定义模板,并使用cv2.filter2D()函数实现平滑和锐化处理。对于频域处理,可以使用numpy.fft.fft2()函数实现傅里叶变换,使用numpy.fft.ifft2()函数实现反变换,使用cv2.magnitude()函数计算幅度谱,使用cv2.phase()函数计算相位谱,使用cv2.dft()函数实现巴特沃斯低通滤波和高通滤波,使用cv2.addWeighted()函数实现高频增强滤波。
我明白了,这是一道编程题,你想让我帮你编写一个可以将24位真彩色BMP文件转换为灰色图像,最后存储为8位伪彩色BMP文件的Python程序,对吧? 好的,先说一下步骤,我们可以将24位真彩色BMP文件的RGB值转换为灰度值,再将灰度值转换为8位伪彩色数值,最后输出8位伪彩色BMP文件,这个过程可以使用面向对象的方式来实现。 以下是代码示例: python class BMPConverter: def __init__(self, filepath): self.filepath = filepath def read_file(self): with open(self.filepath, 'rb') as file: # 读取文件头部,19-22位为位图数据偏移量 file.seek(18) self.img_offset = int.from_bytes(file.read(4), byteorder='little') # 读取位图宽度和高度,18-21位为宽度,22-25位为高度 file.seek(18) self.width = int.from_bytes(file.read(4), byteorder='little') self.height = int.from_bytes(file.read(4), byteorder='little') # 读取位图数据 file.seek(self.img_offset) self.data = file.read() def to_gray(self): # 将RGB值转换为灰度值 gray_data = bytearray() for i in range(self.width * self.height): b = self.data[i * 3] g = self.data[i * 3 + 1] r = self.data[i * 3 + 2] gray_value = int(0.3 * r + 0.59 * g + 0.11 * b) gray_data.append(gray_value) self.data = gray_data def to_pseudocolor(self): # 将灰度值转换为8位伪彩色数值 pseudo_data = bytearray() for i in range(self.width * self.height): gray_value = self.data[i] pseudo_value = int(gray_value / 16) # 每个伪彩色值跨度为16 pseudo_data.append(pseudo_value) self.data = pseudo_data def write_file(self, outpath): # 输出8位伪彩色BMP文件 with open(outpath, 'wb') as file: # 写入文件头部 file.write(b'BM') file.write((14 + 40 + self.width * self.height).to_bytes(4, byteorder='little')) file.write(b'\x00\x00') file.write(b'\x00\x00') file.write((14 + 40).to_bytes(4, byteorder='little')) # 写入信息头 file.write(b'\x28\x00\x00\x00') # BITMAPINFOHEADER file.write(self.width.to_bytes(4, byteorder='little')) file.write(self.height.to_bytes(4, byteorder='little')) file.write(b'\x01\x00') # 1个平面 file.write(b'\x08\x00') # 8位伪彩色 file.write(b'\x00\x00\x00\x00') # 不压缩 file.write((self.width * self.height).to_bytes(4, byteorder='little')) file.write(b'\x00\x00\x00\x00') file.write(b'\x00\x00\x00\x00') file.write(b'\x00\x00\x00\x00') file.write(b'\x00\x00\x00\x00') # 写入调色板 for i in range(256): file.write(bytes([i, i, i, 0])) # 写入位图数据 file.write(self.data) # 测试 if __name__ == '__main__': converter = BMPConverter(r'D:\多媒体技术\3\实验三素材\实验三素材\24位真彩色BMP\robert.bmp') converter.read_file() converter.to_gray() converter.to_pseudocolor() converter.write_file('output.bmp') 这段程序会读取文件,将RGB值转换为灰度值,再将灰度值转换为8位伪彩色数值,最后输出8位伪彩色BMP文件,你可以根据需要修改代码中的输入输出路径。

最新推荐

ChatGPT技术在客户服务中的应用效果与用户满意度评估.docx

ChatGPT技术在客户服务中的应用效果与用户满意度评估

学科融合背景下“编程科学”教学活动设计与实践研究.pptx

学科融合背景下“编程科学”教学活动设计与实践研究.pptx

ELECTRA风格跨语言语言模型XLM-E预训练及性能优化

+v:mala2277获取更多论文×XLM-E:通过ELECTRA进行跨语言语言模型预训练ZewenChi,ShaohanHuangg,LiDong,ShumingMaSaksham Singhal,Payal Bajaj,XiaSong,Furu WeiMicrosoft Corporationhttps://github.com/microsoft/unilm摘要在本文中,我们介绍了ELECTRA风格的任务(克拉克等人。,2020b)到跨语言语言模型预训练。具体来说,我们提出了两个预训练任务,即多语言替换标记检测和翻译替换标记检测。此外,我们预训练模型,命名为XLM-E,在多语言和平行语料库。我们的模型在各种跨语言理解任务上的性能优于基线模型,并且计算成本更低。此外,分析表明,XLM-E倾向于获得更好的跨语言迁移性。76.676.476.276.075.875.675.475.275.0XLM-E(125K)加速130倍XLM-R+TLM(1.5M)XLM-R+TLM(1.2M)InfoXLMXLM-R+TLM(0.9M)XLM-E(90K)XLM-AlignXLM-R+TLM(0.6M)XLM-R+TLM(0.3M)XLM-E(45K)XLM-R0 20 40 60 80 100 120触发器(1e20)1介绍使�

docker持续集成的意义

Docker持续集成的意义在于可以通过自动化构建、测试和部署的方式,快速地将应用程序交付到生产环境中。Docker容器可以在任何环境中运行,因此可以确保在开发、测试和生产环境中使用相同的容器镜像,从而避免了由于环境差异导致的问题。此外,Docker还可以帮助开发人员更快地构建和测试应用程序,从而提高了开发效率。最后,Docker还可以帮助运维人员更轻松地管理和部署应用程序,从而降低了维护成本。 举个例子,假设你正在开发一个Web应用程序,并使用Docker进行持续集成。你可以使用Dockerfile定义应用程序的环境,并使用Docker Compose定义应用程序的服务。然后,你可以使用CI

红楼梦解析PPT模板:古典名著的现代解读.pptx

红楼梦解析PPT模板:古典名著的现代解读.pptx

大型语言模型应用于零镜头文本风格转换的方法简介

+v:mala2277获取更多论文一个使用大型语言模型进行任意文本样式转换的方法Emily Reif 1页 达芙妮伊波利托酒店1,2 * 袁安1 克里斯·卡利森-伯奇(Chris Callison-Burch)Jason Wei11Google Research2宾夕法尼亚大学{ereif,annyuan,andycoenen,jasonwei}@google.com{daphnei,ccb}@seas.upenn.edu摘要在本文中,我们利用大型语言模型(LM)进行零镜头文本风格转换。我们提出了一种激励方法,我们称之为增强零激发学习,它将风格迁移框架为句子重写任务,只需要自然语言的指导,而不需要模型微调或目标风格的示例。增强的零触发学习很简单,不仅在标准的风格迁移任务(如情感)上,而且在自然语言转换(如“使这个旋律成为旋律”或“插入隐喻”)上都表现出了1介绍语篇风格转换是指在保持语篇整体语义和结构的前提下,重新编写语篇,使其包含其他或替代的风格元素。虽然�

xpath爬虫亚马逊详情页

以下是使用XPath爬取亚马逊详情页的步骤: 1. 首先,使用requests库获取亚马逊详情页的HTML源代码。 2. 然后,使用lxml库的etree模块解析HTML源代码。 3. 接着,使用XPath表达式提取所需的数据。 4. 最后,将提取的数据保存到本地或者数据库中。 下面是一个简单的示例代码,以提取亚马逊商品名称为例: ```python import requests from lxml import etree # 设置请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x

基于Internet的数据安全上传软件设计.doc

基于Internet的数据安全上传软件设计.doc

无监督视频对象分割的层次特征对齐网络(HFAN)

+v:mala2255获取更多论文用于无监督视频对象分割的裴根生1,沈福民2(),姚亚洲1,谢国森1(),唐振民1,唐金辉11南京理工大学,中国yazhou. njust.edu.cn2电子科技大学,中国https://github.com/NUST-Machine-Intelligence-Laboratory/HFAN抽象的。 光流是一个容易构思和宝贵的线索,为推进无监督视频对象分割(UVOS)。以往的方法大多是在UVOS环境下直接提取和融合运动和外观特征来分割目标对象。然而,光流本质上是连续帧中所有像素的瞬时速度,从而使得运动特征与对应帧中的主要对象为了解决上述挑战,我们提出了一个简洁,实用,高效的外观和运动特征对齐架构,被称为层次特征对齐网络(HFAN)。具体而言,HFAN中的关键优点是顺序特征匹配(FAM)模块和特征匹配(FAT)模块,其用于分层地处理表观和运动特征FAM能够分别将外观和运动特征与主要对象语义表�

python的多线程似乎性能提高并不显著?

是的,Python的多线程对于计算密集型任务的性能提升并不显著,这是因为Python解释器中的全局解释器锁(GIL)的存在。GIL是一种机制,它确保在任何时候只有一个线程在执行Python字节码。这意味着,即使有多个线程,它们也不能同时执行Python字节码,从而限制了多线程的性能提升。因此,对于计算密集型任务,使用Python多线程并不会显著提高CPU利用率。 如果你需要处理计算密集型任务,可以考虑使用Python的多进程模块,例如multiprocessing。与多线程不同,多进程可以同时使用多个CPU核心,从而提高CPU利用率和性能。 另外,对于I/O密集型任务,Python的多线程