0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_Ufm3lVrj 来源:凌顺实验室 2024-02-25 13:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文介绍如何仔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
    PIL
    +关注

    关注

    0

    文章

    19

    浏览量

    8919

原文标题:PIL图像和OpenCV图像数据格式互相转换

文章出处:【微信号:凌顺实验室,微信公众号:凌顺实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Vivado设计流程分析 Vivado HLS实现OpenCV的开发流程

    作者:Harvest Guo来源:Xilinx DSP Specilist 本文通过对OpenCV图像类型和函数处理方法的介绍,通过设计实例描述在vivadoHLS中调用OpenCV库函数
    发表于 04-23 11:32 6289次阅读
    Vivado设计流程分析 Vivado HLS<b class='flag-5'>实现</b><b class='flag-5'>OpenCV</b>的开发流程

    opencv跟labview图像格式的转换

    opencv跟labview图像格式的转换,有大神会吗,教我?
    发表于 08-13 21:07

    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进行图像处理

    使用opencv进行图像处理_于仕琪,感兴趣的可以看看。
    发表于 05-03 14:45 0次下载

    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的测试用例就没有功能意义上的要求,只要要求代码和模型输入的测试数据相同即可,当然希望
    的头像 发表于 09-17 11:51 1.7w次阅读
    关于MIL、SIL、<b class='flag-5'>PIL</b>和HIL<b class='flag-5'>之间</b>的联系和异同分析

    OpenCV实现图像形态学什么常见操作?

    图像形态学是图像处理的分支学科,在二值图像处理中占有重要地位、OpenCV实现图像形态学如下
    的头像 发表于 05-27 14:11 1888次阅读
    <b class='flag-5'>OpenCV</b>中<b class='flag-5'>实现</b>了<b class='flag-5'>图像</b>形态学什么常见操作?

    PIL的使用以及划分图像的皮肤区域

    本项目将使用python3去识别图片是否为色情图片,会使用到PIL这个图像处理库,并且编写算法来划分图像的皮肤区域
    的头像 发表于 07-15 10:03 2193次阅读

    手把手教你使用LabVIEW OpenCV dnn实现图像分类(含源码)

    使用LabVIEW OpenCV dnn实现图像分类
    的头像 发表于 03-09 13:37 2268次阅读

    PiL测试实战(下)| PiL阶段的闭环测试

    算法(ControllerModel)刷入目标板,那如何带着位于PC端的PlantModel一起进行闭环测试?图1PiL阶段的闭环测试流程下面我会为以一个座舱温度
    的头像 发表于 12-15 10:31 1517次阅读
    <b class='flag-5'>PiL</b>测试实战(下)| <b class='flag-5'>PiL</b>阶段的闭环测试

    如何安装Python图像处理PIL

    安装PIL库 要使用PIL库,我们首先需要安装它。有两种方法可以安装PIL库: 方法一:使用pip命令,在终端或命令行中输入以下代码: pip install Pillow 方法二:从官网下
    的头像 发表于 09-12 17:15 3616次阅读
    如何安装Python<b class='flag-5'>图像</b>处理<b class='flag-5'>PIL</b>库

    OpenCV图像识别C++代码

    安装OpenCV库 首先,您需要在您的计算机上安装OpenCV库。您可以从OpenCV官网下载预编译的库或从源代码编译。安装完成后,确保将OpenCV的头文件和库文件添加到您的项目中。
    的头像 发表于 07-16 10:42 5658次阅读