📜  在Python中将 OpenCV 图像转换为 PIL 图像

📅  最后修改于: 2022-05-13 01:55:14.371000             🧑  作者: Mango

在Python中将 OpenCV 图像转换为 PIL 图像

OpenCV 是一个巨大的开源库,用于计算机视觉、机器学习和图像处理。 OpenCV 支持多种编程语言,如Python、C++、 Java等。它可以处理图像和视频以识别对象、面部甚至人类的笔迹。当它与各种库集成时,例如 Numpy,这是一个高度优化的数值运算库,然后你的武器库中的武器数量就会增加,即可以在 Numpy 中执行的任何操作都可以与 OpenCV 结合使用。

Python Imaging Library(PIL 的扩展)是Python语言事实上的图像处理包。它结合了有助于编辑、创建和保存图像的轻量级图像处理工具。对Python Imaging Library 的支持于 2011 年停止,但名为 Pillow 的项目分叉了原始 PIL 项目并为其添加了 Python3.x 支持。 Pillow 被宣布为 PIL 的替代品,以备将来使用。 Pillow 支持多种图像文件格式,包括 BMP、PNG、JPEG 和 TIFF。该库鼓励通过创建新的文件解码器在库中添加对更新格式的支持。

OpenCV 图像和 PIL 图像之间的基本区别是 OpenCV 遵循 BGR 颜色约定,PIL 遵循 RGB 颜色约定,转换方法将基于此差异。

方法:

  • 导入模块
  • 我们将使用 cv2 库的imread方法获取输入图像。

句法:

imread(path, flag)

参数:

  1. path:一个字符串,表示要读取的图像的路径。
  2. 标志:它指定应该如何读取图像。它的默认值为 cv2.IMREAD_COLOR。

返回值:此方法返回从指定文件加载的图像。

  • 然后我们将使用cv2 库的 cv2.cvtColor()方法来更改颜色约定。

句法:

cvtColor(src, code[, dst[, dstCn]])

参数:

  1. src:要改变色彩空间的图像。
  2. code:颜色空间转换代码。
  3. dst:与src图像大小和深度相同的输出图像。它是一个可选参数。
  4. dstCn:目标图像中的通道数。如果参数为 0,则通道数将自动从 src 和代码导出。它是一个可选参数。

返回值:它返回一个图像。

  • 显示图像。

您会注意到,即使在转换后,这两个图像也将相同。因此,我们可以说我们已经成功地将 OpenCV 图像转换为 PIL 图像。

下面给出了使用上述方法的实现。

程序:

Python3
# Python program to convert from openCV2 to PIL
  
import cv2
from PIL import Image
  
# Open image using openCV2
opencv_image = cv2.imread("logo.png")
  
# Notice the COLOR_BGR2RGB which means that the color is
# converted from BGR to RGB
color_coverted = cv2.cvtColor(opencv_image, cv2.COLOR_BGR2RGB)
  
# Displaying the Scanned Image by using cv2.imshow() method
cv2.imshow("OpenCV Image", opencv_image)
  
# Displaying the converted image
pil_image = Image.fromarray(color_coverted)
pil_image.show()
  
# waits for user to press any key
# (this is necessary to avoid Python kernel form crashing)
cv2.waitKey(0)
  
# closing all open windows
cv2.destroyAllWindows()


输入:

输出:

  • OpenCV 图像:

  • PIL 图像: