python中的opencv和PIL(pillow)转化操作

opencv > pil

import cv2
from PIL import Image
img = cv2.imread("test.png")
image = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB)) 

pil > opencv

import cv2
from PIL import Image
image = Image.open("test.png")
img = cv2.cvtColor(numpy.asarray(image),cv2.COLOR_RGB2BGR) 

补充:skimage与opencv图片格式的相互转换

skimage是python的一个图像库,常常与matplotlib一起作为视频、图像类的基本库。而opencv作为非常流行的视觉库,在图像处理中使用非常常见,本篇介绍两种库的图像格式的相互转换。

skimage

图像格式

通道:RGB

像素值:[0,1]

Opencv

图像格式

通道:BGR

像素值:[0,255]

转换

转换过程现封装如下:

def skimage2opencv(src):
  src *= 255
  src.astype(int)
  cv2.cvtColor(src,cv2.COLOR_RGB2BGR)
  return src

def opencv2skimage(src):
  cv2.cvtColor(src,cv2.COLOR_BGR2RGB)
  src.astype(float32)
  src /= 255
  return src

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Python实现批量修改图片格式和大小的方法【opencv库与PIL库】

    本文实例讲述了Python实现批量修改图片格式和大小的方法.分享给大家供大家参考,具体如下: 第一种方法用到opencv库 import os import time import cv2 def alter(path,object): result = [] s = os.listdir(path) count = 1 for i in s: document = os.path.join(path,i) img = cv2.imread(document) img = cv2.resize(

  • 详解Python Opencv和PIL读取图像文件的差别

    前言 之前在进行深度学习训练的时候,偶然发现使用PIL读取图片训练的效果要比使用python-opencv读取出来训练的效果稍好一些,也就是训练更容易收敛.可能的原因是两者读取出来的数据转化为pytorch中Tensor变量稍有不同,这里进行测试. 之后的代码都导入了: from PIL import Image import matplotlib.pyplot as plt import numpy as np import torch import cv2 测试 使用PIL和cv2读取图片时

  • Python 实现OpenCV格式和PIL.Image格式互转

    OpenCV转换成PIL.Image格式: import cv2 from PIL import Image import numpy img = cv2.imread("plane.jpg") cv2.imshow("OpenCV",img) image = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB)) image.show() cv2.waitKey() PIL.Image转换成OpenCV格式: im

  • Python实现图片裁剪的两种方式(Pillow和OpenCV)

    在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还有一种利用了OpenCV.两种方式都需要简单的几行代码,这可能也就是现在Python那么流行的原因吧. 首先,我们有一张原始图片,如下图所示: 原始图片 然后,我们利用OpenCV对其进行裁剪,代码如下所示: import cv2 img = cv2.imread("./data/cut/thor.jpg") print(img.shape) cropped = img[0:128, 0:512] #

  • 详解python opencv、scikit-image和PIL图像处理库比较

    进行深度学习时,对图像进行预处理的过程是非常重要的,使用pytorch或者TensorFlow时需要对图像进行预处理以及展示来观看处理效果,因此对python中的图像处理框架进行图像的读取和基本变换的掌握是必要的,接下来python中几个基本的图像处理库进行纵向对比. 项目地址:https://github.com/Oldpan/Pytorch-Learn/tree/master/Image-Processing 比较的图像处理框架: PIL scikit-image opencv-python

  • python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结

    在处理图像的时候经常是读取图片以后把图片转换为灰度图.作为一个刚入坑的小白,我在这篇博客记录了四种处理的方法. 首先导入包: import numpy as np import cv2 import tensorflow as tf from PIL import Image 方法一:在使用OpenCV读取图片的同时将图片转换为灰度图: img = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE) print("cv2.imread(imgfile, cv2.I

  • python中的opencv和PIL(pillow)转化操作

    opencv > pil import cv2 from PIL import Image img = cv2.imread("test.png") image = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB)) pil > opencv import cv2 from PIL import Image image = Image.open("test.png") img = cv2.cvtCol

  • 在python中利用opencv简单做图片比对的方法

    下面代码中利用了两种比对的方法,一 对图片矩阵(m x m)求解特征值,通过比较特征值是否在一定的范围内,判断图片是否相同.二 对图片矩阵(m x m)中1求和,通过比较sum和来比较图片. # -*- coding: utf-8 -*- import cv2 as cv import numpy as np import os file_dir_a='C:\Users\wt\Desktop\data\image1\\' file_dir_b='C:\Users\wt\Desktop\data\

  • 详解在Python中使用OpenCV进行直线检测

    目录 1.引言 2.霍夫变换 3.举个栗子 3.1读入图像进行灰度化 3.2执行边缘检测 3.3进行霍夫变换 补充 1. 引言 在图像处理中,直线检测是一种常见的算法,它通常获取n个边缘点的集合,并找到通过这些边缘点的直线.其中用于直线检测,最为流行的检测器是基于霍夫变换的直线检测技术. 2. 霍夫变换 霍夫变换是图像处理中的一种特征提取方法,可以识别图像中的几何形状.它将在参数空间内进行投票来决定其物体形状,通过检测累计结果找到一极大值所对应的解,利用此解即可得到一个符合特定形状的参数. 在使

  • Python中使用Opencv开发停车位计数器功能

    目录 1. 环境安装 1.1 安装并激活虚拟环境 1.2 python包安装 2. 绘制停车位矩形框 2.1 导入停车场图片 2.2 绘制矩形框 定位停车位 2.3 鼠标添加.删除停车位 3. 停车位视频分析 3. 1 停车监控视频 3. 2 截取停车位 3. 3 图像处理 3. 4 判断停车位是否被占用 在这个项目中,我们将创建一个停车位计数器.我们会发现总共有多少辆车,以及有多少停车位是空的.关于本教程最好的一点是,我们将使用基本的图像处理技术来解决这个问题,没有使用机器学习.深度学习进行训

  • python中的opencv 图像分割与提取

    目录 图像分割与提取 用分水岭算法实现图像分割与提取 算法原理 相关函数介绍 分水岭算法图像分割实例 交互式前景提取 图像分割与提取 图像中将前景对象作为目标图像分割或者提取出来.对背景本身并无兴趣分水岭算法及GrabCut算法对图像进行分割及提取. 用分水岭算法实现图像分割与提取 分水岭算法将图像形象地比喻为地理学上的地形表面,实现图像分割,该算法非常有效. 算法原理 任何一幅灰度图像,都可以被看作是地理学上的地形表面,灰度值高的区域可以被看成是山峰,灰度值低的区域可以被看成是山谷. 左图是原

  • python中的opencv 图像梯度

    目录 图像梯度 Sobel理论基础 计算水平方向偏导数的近似值 计算垂直方向偏导数的近似值 Sobel算子及函数使用 方向 计算x方向和y方向的边缘叠加 Scharr算子及函数使用 Sobel算子和Scharr算子的比较 Laplacian算子及函数使用 算子总结 图像梯度 图像梯度计算的是图像变化的速度.对于图像的边缘部分,其灰度值变化较大,梯度值也较大:相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小.图像梯度计算需要求导数,但是图像梯度一般通过计算像素值的差来得到梯度的

  • Python中快速掌握Data Frame的常用操作

    掌握Data Frame的常用操作 一. 查看DataFrame的常用属性 DataFrame基础属性有:values(元素).index(索引).columns(列名) .dtypes(类型).size(元素个数).ndim(维度数)和 shape(形状大小尺寸),还有使用T属性 进行转置 import pandas as pd detail=pd.read_excel('E:\data\meal_order_detail.xlsx') #读取数据,使用read_excel 函数调用 # pr

  • Python中字典的基础介绍及常用操作总结

    目录 1.字典的介绍 2.访问字典的值 (一)根据键访问值 (二)通过get()方法访问值 3.修改字典的值 4.添加字典的元素(键值对) 5.删除字典的元素 6.字典常见操作 1.len 测量字典中键值对的个数 2. keys 返回一个包含字典所有KEY的列表 3. values 返回一个包含字典所有value的列表 4. items 返回一个包含所有(键,值)元祖的列表 5.遍历字典的key(键) 6.遍历字典的value(值) 7.遍历字典的items(元素) 8.遍历字典的items(键

  • Python中关于集合的介绍与常规操作解析

    目录 1.集合的介绍 2.访问集合的元素 3.集合的添加 4.集合的修改 5.集合的删除 1.使用remove方法 2.使用pop方法 3.使用discard方法 6.集合的交集和并集 1.交集 2.并集 7.公共方法 8.python内置函数 1.len 2.max 3.min 4.del 1.集合的介绍 集合是无序的,集合中的元素是唯一的,集合一般用于元组或者列表中的元素去重. 定义一个空集合 格式如下: name=set() 注意以下写法为一个空字典,为空默认是字典,如果有数据在根据格式判

  • Python中元组的基础介绍及常用操作总结

    目录 1.元组的介绍 2.访问元组 3.修改元组(不可以修改的) 4.元组的内置函数有count,index 5.类型转换 1.将元组转换为列表 2.将元组转换为集合 1.元组的介绍 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 元组的格式: tup=('a','b','c','d') 2.访问元组 元组可以使用下标索引来访问元组中的值,下标索引从0开始 例如: tup=('a','

随机推荐