本文介绍如何仔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文章
46浏览量
11182 -
OpenCV
+关注
关注
29文章
611浏览量
40776 -
PIL
+关注
关注
0文章
18浏览量
8507
原文标题:PIL图像和OpenCV图像数据格式互相转换
文章出处:【微信号:凌顺实验室,微信公众号:凌顺实验室】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
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
【EASY EAI Nano开源套件试用体验】3. OpenCV 图像处理开发测试
RkMedia SDK和OpenCV对接,完成opencv中的图像采集输入与输出显示。 方法就是把OPenCV的Mat图像矩阵中的
发表于 03-08 00:03
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
•6425次阅读
OpenCV中的图像的计算
今天我们一起学习的是OpenCV中的图像的计算,在图像计算中,分为像素级运算和代数运算这两大类,今天我们借助OpenCV中的函数一起来看看这些运算。 一:
PIL的使用以及划分图像的皮肤区域
本项目将使用python3去识别图片是否为色情图片,会使用到PIL这个图像处理库,并且编写算法来划分图像的皮肤区域
PiL测试实战(下)| PiL阶段的闭环测试
作者:酷兔本兔小编:吃不饱上篇我们介绍了单元级软件的PiL测试,对于集成级的PiL测试,其流程和单元阶段基本一致。然而,对于一些带有反馈控制逻辑的集成测试(如电机控制器MCU),PiL阶段会将控制
如何安装Python图像处理PIL库
安装PIL库 要使用PIL库,我们首先需要安装它。有两种方法可以安装PIL库: 方法一:使用pip命令,在终端或命令行中输入以下代码: pip install Pillow 方法二:从官网下
评论