本文介绍如何仔PIL和OpenCV之间图像数据的转换,因为有时候在图片处理速度上PIL会更胜一筹,现在这个转换方法写成一个函数,以便它转换具有灰度或 alpha 通道的图像。
PIL图像数据格式转换成OpenCV图像数据格式
1,使用cv2转换色彩的方法
import numpy as np
import cv2
def pil2cv(PIL_image):
''' PIL型 -> OpenCV型 '''
cv2_image = np.array(PIL_image, dtype=np.uint8)
if cv2_image.ndim == 2: # 黑白
pass
elif cv2_image.shape[2] == 3: # 彩色的3通道
new_image = cv2.cvtColor(cv2_image, cv2.COLOR_RGB2BGR)
elif cv2_image.shape[2] == 4: # 包含透明的4通道
cv2_image = cv2.cvtColor(cv2_image, cv2.COLOR_RGBA2BGRA)
return cv2_image
2,不 使用cv2转换色彩的方法
import numpy as np
def pil2cv(PIL_image):
''' PIL型 -> OpenCV型 '''
cv2_image = np.array(PIL_image, dtype=np.uint8)
if cv2_image.ndim == 2: # 黑白
pass
elif cv2_image.shape[2] == 3: # 彩色的3通道
cv2_image = cv2_image[:, :, ::-1]
elif cv2_image.shape[2] == 4: # 包含透明的4通道
cv2_image = cv2_image[:, :, [2, 1, 0, 3]]
return cv2_image
OpenCV图像数据格式转换成PIL图像数据格式
1,使用cv2转换色彩的方法
from PIL import Image
import cv2
def cv2pil(cv2_image):
''' OpenCV型 -> PIL型 '''
pil_image = cv2_image.copy()
if pil_image.ndim == 2: # 黑白
pass
elif pil_image.shape[2] == 3: # 彩色的3通道
pil_image = cv2.cvtColor(pil_image, cv2.COLOR_BGR2RGB)
elif pil_image.shape[2] == 4: # 包含透明的4通道
pil_image = cv2.cvtColor(pil_image, cv2.COLOR_BGRA2RGBA)
pil_image = Image.fromarray(pil_image)
return pil_image
2,不使用cv2转换色彩的方法
from PIL import Image
def cv2pil(cv2_image):
''' OpenCV型 -> PIL型 '''
pil_image = cv2_image.copy()
if pil_image.ndim == 2: # 黑白
pass
elif pil_image.shape[2] == 3: # 彩色的3通道
pil_image = pil_image[:, :, ::-1]
elif pil_image.shape[2] == 4: # 包含透明的4通道
pil_image = pil_image[:, :, [2, 1, 0, 3]]
pil_image = Image.fromarray(new_pil_imageimage)
return pil_image
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
图像数据
+关注
关注
0文章
54浏览量
11633 -
OpenCV
+关注
关注
33文章
651浏览量
44412 -
PIL
+关注
关注
0文章
19浏览量
8919
原文标题:PIL图像和OpenCV图像数据格式互相转换
文章出处:【微信号:凌顺实验室,微信公众号:凌顺实验室】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
Vivado设计流程分析 Vivado HLS实现OpenCV的开发流程
作者:Harvest Guo来源:Xilinx DSP Specilist 本文通过对OpenCV中图像类型和函数处理方法的介绍,通过设计实例描述在vivadoHLS中调用OpenCV库函数实
发表于 04-23 11:32
•6289次阅读
Vivado HLS实现OpenCV图像处理的设计流程与分析
::Mat《》类型的转换。2、使用VivadoHLS实现OpenCV到RTL代码转换的流程2.1 OpenCV设计中的权衡
发表于 07-08 08:30
如何去实现一种基于opencv与flask的摄像头图像传输呢
硬件:eaidk610(fedaro28)、普通带usb接口摄像头软件环境: python3.9、opencv4.6、Flask2.2主要实现了从板子的连接的摄像头收集图像并在网页中展示,板子上没有
发表于 10-18 14:25
如何使用Python中的OpenCV模块检测颜色
numpy然后,导入模块。读取图像并使用 OpenCV 模块中的 cvtColor() 函数将BGR图像转换为 HSV (色调、饱和度、值) 图像
发表于 02-09 16:31
i.MX8m plus如何在ICC配置文件之间进行转换?
我知道 NXP OpenCV fork 集成了 eIQ,用于 i.MX8m plus 上的硬件加速神经图像处理。
但是,非机器学习图像处理又如何呢,例如在 ICC 配置文件
发表于 05-31 06:02
opencv中三种常见数据容器:Mat,cvMat和IplImage及它们编程显示图像的差异
IplImage, CvMat, Mat 的关系opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重
发表于 11-25 13:18
•6790次阅读
关于MIL、SIL、PIL和HIL之间的联系和异同分析
SIL和PIL是等效性测试,测试的目的是为了验证自动生成的代码和模型具有相同的行为,既然如此,对于SIL和PIL的测试用例就没有功能意义上的要求,只要要求代码和模型输入的测试数据相同即可,当然希望
PIL的使用以及划分图像的皮肤区域
本项目将使用python3去识别图片是否为色情图片,会使用到PIL这个图像处理库,并且编写算法来划分图像的皮肤区域
PiL测试实战(下)| PiL阶段的闭环测试
算法(ControllerModel)刷入目标板,那如何带着位于PC端的PlantModel一起进行闭环测试呢?图1PiL阶段的闭环测试流程下面我会为以一个座舱温度
如何安装Python图像处理PIL库
安装PIL库 要使用PIL库,我们首先需要安装它。有两种方法可以安装PIL库: 方法一:使用pip命令,在终端或命令行中输入以下代码: pip install Pillow 方法二:从官网下
OpenCV图像识别C++代码
安装OpenCV库 首先,您需要在您的计算机上安装OpenCV库。您可以从OpenCV官网下载预编译的库或从源代码编译。安装完成后,确保将OpenCV的头文件和库文件添加到您的项目中。

如何实现PIL和OpenCV之间图像数据的转换呢?
评论