在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)
参数:
- path:一个字符串,表示要读取的图像的路径。
- 标志:它指定应该如何读取图像。它的默认值为 cv2.IMREAD_COLOR。
返回值:此方法返回从指定文件加载的图像。
- 然后我们将使用cv2 库的 cv2.cvtColor()方法来更改颜色约定。
句法:
cvtColor(src, code[, dst[, dstCn]])
参数:
- src:要改变色彩空间的图像。
- code:颜色空间转换代码。
- dst:与src图像大小和深度相同的输出图像。它是一个可选参数。
- 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 图像: