python PIL/cv2/base64相互转换实例

PIL和cv2是python中两个常用的图像处理库,PIL一般是anaconda自带的,cv2是opencv的python版本。base64在网络传输图片的时候经常用到。

##PIL读取、保存图片方法
from PIL import Image
img = Image.open(img_path)
img.save(img_path2)

##cv2读取、保存图片方法
import cv2
img = cv2.imread(img_path)
cv2.imwrite(img_path2, img)

##图片文件打开为base64
import base64

def img_base64(img_path):
  with open(img_path,"rb") as f:
    base64_str = base64.b64encode(f.read())
  return base64_str 

1、PIL和cv2转换

##PIL转cv2
import cv2
from PIL import Image
import numpy as np

def pil_cv2(img_path):
  image = Image.open(img_path)
  img = cv2.cvtColor(np.asarray(image),cv2.COLOR_RGB2BGR)
  return img

##cv2转PIL
import cv2
from PIL import Image

def cv2_pil(img_path):
  image = cv2.imread(img_path)
  image = Image.fromarray(cv2.cvtColor(image,cv2.COLOR_BGR2RGB))
  return image

2、PIL和base64转换

##PIL转base64
import base64
from io import BytesIO

def pil_base64(image):
  img_buffer = BytesIO()
  image.save(img_buffer, format='JPEG')
  byte_data = img_buffer.getvalue()
  base64_str = base64.b64encode(byte_data)
  return base64_str

##base64转PIL
import base64
from io import BytesIO
from PIL import Image

def base64_pil(base64_str):
  image = base64.b64decode(base64_str)
  image = BytesIO(image)
  image = Image.open(image)
  return image

3、cv2和base64转换

##cv2转base64
import cv2

def cv2_base64(image):
  base64_str = cv2.imencode('.jpg',image)[1].tostring()
  base64_str = base64.b64encode(base64_str)
  return base64_str 

##base64转cv2
import base64
import numpy as np
import cv2

def base64_cv2(base64_str):
  imgString = base64.b64decode(base64_str)
  nparr = np.fromstring(imgString,np.uint8)
  image = cv2.imdecode(nparr,cv2.IMREAD_COLOR)
  return image

以上这篇python PIL/cv2/base64相互转换实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python 解码Base64 得到码流格式文本实例

    我就废话不多说了,直接上代码吧! # coding:utf8 import base64 def BaseToFlow(): while True: str = input("Please input src: ") flag = input("Please input Decode - 1 or Encode - 2: ") if str == "": str = "ApIAGBcEAAAEBO6x3nLykEEhjWMX1wHs&q

  • Python使用base64模块进行二进制数据编码详解

    前言 昨天团队的学妹来问关于POP3协议的问题,所以今天稍稍研究了下POP3协议的格式和Python里面的poplib.而POP服务器往回传的数据里有一部分需要用到Base64进行解码,所以就顺便看了下Python里面的base64模块. 本篇先讲一下base64模块,该模块提供了关于Base16,Base32,Base64,Base85和Ascii85的编码和解码相关的函数.有关poplib模块的内容,会在后面发上来.嗯,又挖了一个坑,这辈子挖的坑填不完了... 以下内容摘自http://bb

  • python cv2读取rtsp实时码流按时生成连续视频文件方式

    我就废话不多说了,直接上代码吧! # coding: utf-8 import datetime import cv2 import os ip = '192.168.3.160'.replace(".", "_") rtsp = 'rtsp://admin:admin@192.168.3.160:554/1/1' # 初始化摄像头 cap = cv2.VideoCapture(rtsp) fourcc = cv2.VideoWriter_fourcc(*'XVID

  • python base64库给用户名或密码加密的流程

    给明文密码加密的流程: import base64 pwd_after_encrypt = base64.b64encode(b'this is a scret!') pwd_before_encrypt = base64.b64decode(b'dGhpcyBpcyBhIHNjcmV0IQ==').decode('ascii') print(pwd_after_encrypt) print(pwd_before_encrypt) 运行结果: b'dGhpcyBpcyBhIHNjcmV0IQ==

  • Python3内置模块之base64编解码方法详解

    概述 Base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,Base64 就是一种基于 64 个可打印字符来表示二进制数据的方法.可查看 RFC2045 - RFC2049,上面有 MIME 的详细规范.Base64 编码是从二进制到字符的过程,可用于在 HTTP 环境下传递较长的标识信息.比如使二进制数据可以作为电子邮件的内容正确地发送,用作 URL 的一部分,或者作为 HTTP POST 请求的一部分. 即 base64 其实不能归属密码领域,作用也不是用于加密,它是一种编

  • python PIL/cv2/base64相互转换实例

    PIL和cv2是python中两个常用的图像处理库,PIL一般是anaconda自带的,cv2是opencv的python版本.base64在网络传输图片的时候经常用到. ##PIL读取.保存图片方法 from PIL import Image img = Image.open(img_path) img.save(img_path2) ##cv2读取.保存图片方法 import cv2 img = cv2.imread(img_path) cv2.imwrite(img_path2, img)

  • python PIL Image 图像处理基本操作实例

    1. 图片加载.灰度图. 显示和保存 from PIL import Image img = Image.open('01.jpg') imgGrey = img.convert('L') img.show() imgGrey.show() img.save('img_copy.jpg') imgGrey.save('img_gray.jpg') 2. 图片宽.高.通道模式.平均值获取 from PIL import Image import numpy as np img = Image.op

  • Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)

    问题描述 最近做一个项目,是用Python进行相关的串口操作.及将相关指令通过串口发给设备,设备根据发过来的指令来做出相应的操作,所用的库是Pyserial.在最初开发时,出现的问题在于:别人给的文档里面的命令是十六进制的.例如,给出一个指令: 5aa5 07 82 1000 3132 3334 . 那么,我们需要思考的是,我们如何将上面的指令,转换为pyserial库进行写操作时(write)所需要的bytes类型. 解决方法 首先,我们需要知道的是,我们首先,需要用字符串构造成上面的指令,然

  • Python 读取xml数据,cv2裁剪图片实例

    下载的数据是pascal voc2012的数据,已经有annotation了,不过是xml格式的,训练的模型是在Google模型的基础上加了两层网络,因此要在原始图像中裁剪出用于训练的部分图像. 另外,在原来给的标注框的基础上,做了点框的移动.最后同类目标存储在同一文件夹中. from __future__ import division import os from PIL import Image import xml.dom.minidom import numpy as np ImgPa

  • Python字符串、整数、和浮点型数相互转换实例

    前言序锦 在编程中,经常要用到字符串的相互转换,现在在这里记录一下Python里面的字符串和整数以及浮点型数之间是如何进行相互转换的. int(str)函数将符合整数的规定的字符串转换成int型的 float(str)函数将符合浮点型的规定的字符串转换成float型的 str(num)将整数.浮点型转换成字符串型的 int(str)函数将符合整数的规定的字符串转换成int型的 num2 = "123"; num2 = int(num1); print("num2: %d&qu

  • python之cv2与图像的载入、显示和保存实例

    本文是OpenCV 2 Computer Vision Application Programming Cookbook读书笔记的第一篇.在笔记中将以Python语言改写每章的代码. PythonOpenCV的配置这里就不介绍了. 注意,现在OpenCV for Python就是通过NumPy进行绑定的.所以在使用时必须掌握一些NumPy的相关知识! 图像就是一个矩阵,在OpenCV for Python中,图像就是NumPy中的数组! 如果读取图像首先要导入OpenCV包,方法为: impor

  • Python 通过URL打开图片实例详解

    Python 通过URL打开图片实例详解 不论是用OpenCV还是PIL,skimage等库,在之前做图像处理的时候,几乎都是读取本地的图片.最近尝试爬虫爬取图片,在保存之前,我希望能先快速浏览一遍图片,然后有选择性的保存.这里就需要从url读取图片了.查了很多资料,发现有这么几种方法,这里做个记录. 本文用到的图片URL如下: img_src = 'http://wx2.sinaimg.cn/mw690/ac38503ely1fesz8m0ov6j20qo140dix.jpg' 1.用Open

  • python Tkinter的图片刷新实例

    调用python自带的GUI制作库 一开始想用Tkinter制作GUI的,网上说是python自带的,结果输入: import tkinter 后,显示: _ImportError: No module named tkinter_ 以为是没有安装,还利用apt-get install 命令安装了一堆东西,安装完了发现还是没有用.(⊙﹏⊙)b 后来看到如果是用的python2.7的话,需要输入 import Tkinter 然后就可以用了. 显示连续刷新的图片 开始用的TK的Label功能来显示

  • 用python生成一张壁纸实例代码

    目录 前言 代码 效果 总结 前言 之前在csdn上看见用python写春联的,这次突发奇想用python制作一张壁纸,其元素包括背景.文字.图片. 知识点 用PIL创建一张纯色背景Image.new:图片上添加文字ImageDraw,cv2只能显示英文:转换图片的透明度:图片上叠加图片:jpg与png的区别. 代码 import os from PIL import ImageFont, ImageDraw, Image import cv2 import random def white2t

  • Python简单实现Base64编码和解码的方法

    本文实例讲述了Python简单实现Base64编码和解码的方法.分享给大家供大家参考,具体如下: Base64编码是一种"防君子不防小人"的编码方式.广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有"=",生成的编码都是ascii字符. 优点:速度快,ascii字符,肉眼不可理解 缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合 Python Base64编码和解码示例: >>> import base6

随机推荐