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

    文章

    46

    浏览量

    11182
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40776
  • PIL
    PIL
    +关注

    关注

    0

    文章

    18

    浏览量

    8507

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

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

收藏 人收藏

    评论

    相关推荐

    opencv跟labview图像格式的转换

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

    OpenCV图像

    之前学过一段时间OpenCV,跟着网上的资料,自己瞎搞了个上位机,可以对摄像头采集的图像简单处理,在此献丑了,hhhhhh
    发表于 07-11 19: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

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

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

    opencv中三种常见数据容器:Mat,cvMat和IplImage及它们编程显示图像的差异

    IplImage, CvMat, Mat 的关系opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重
    发表于 11-25 13:18 6425次阅读

    OpenCV中的图像的计算

    今天我们一起学习的是OpenCV中的图像的计算,在图像计算中,分为像素级运算和代数运算这两大类,今天我们借助OpenCV中的函数一起来看看这些运算。 一:
    的头像 发表于 11-03 17:45 1905次阅读

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

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

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

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

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

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

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

    作者:酷兔本兔小编:吃不饱上篇我们介绍了单元级软件的PiL测试,对于集成级的PiL测试,其流程和单元阶段基本一致。然而,对于一些带有反馈控制逻辑的集成测试(如电机控制器MCU),PiL阶段会将控制
    的头像 发表于 12-15 10:31 480次阅读
    <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 1341次阅读
    如何安装Python<b class='flag-5'>图像</b>处理<b class='flag-5'>PIL</b>库