首页 > 其他分享 >PIL和pillow,opencv库的区别

PIL和pillow,opencv库的区别

时间:2022-10-29 10:34:33浏览次数:42  
标签:PIL 读取 img Image cv2 Pillow opencv pillow

 

一、PIL

分不清PILPillow,于是简单整理一下二者区别;

PIL全称是:Python Imaging Library。

PIL是一个强大的、方便的python图像处理库,功能非常强大,曾经一度被认为是python平台事实上的图像处理标准库,不过Python 2.7以后不再支持。

PIL官方网站:

http://pythonware.com/products/pil/

二、Pillow

Pillow是基于PIL模块fork的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库。

pillow

Pillow友好支持python3,目前pypi上最新版本是Pillow 7.2.0

Pillow官方文档地址:

https://pillow.readthedocs.io/en/stable/

python3安装pillow:

pip install Pillow

tip:PillowPIL不能在同一个环境中共存。在安装Pillow之前,请先卸载PIL.

简单使用Pillow

# 从Pillow导入Image模块
from PIL import Image

# 打开图片bride.jpg
im = Image.open("bride.jpg")

# 显示图片
im.rotate(45).show()

  正是这里的from PIL,可能会让很多新人疑惑。虽然是pillow,但是导入包的写法依然是from PIL

Image只是pillow众多模块之一。其他模块以及对应文档参照官网:https://pillow.readthedocs.io/en/stable/reference/index.html

 

读取图片函数:

cv2.imread()

Image.open()

注意:Image.open()函数只是保持了图像被读取的状态,但是图像的真实数据并未被读取,因此如果对需要操作图像每个元素,如输出某个像素的RGB值等,需要执行对象的load()方法读取数据

Image.open()读取的通道顺序是RGB,cv2.imread()读取的通道顺序为BGR。

PIL函数读取图片的时候,结合np.array()使用。

注意:

PIL.Image.save()直接保存RGB的图片

cv2.imwirte()保存图片的时候相当于做了BGR2RGB再去保存



显示的区别

cv2.imshow()采用BGR模式

plt.imshow() 采用RGB模式

img.show() 采用RGB模式

PIL.Image转Opencv

cv2_img = cv2.cvtColor(numpy.asarray(Img_img),cv2.COLOR_RGB2BGR)

Opencv转PIL.Image

pil_img = Image.fromarray(cv2.cvtColor(cv_img,cv2.COLOR_BGR2RGB))



有人做实验发现:PIL读取出来的图片转为numpy格式和直接使用cv读取的图片在像素点上并不是完全一致。



除了上述两种读取图片的方式以外,python还支持以下方式读取图片:

(1)from matplotlib.image import imread

img = imread(img_path) # 返回 ndarray

(2)from http://skimage.io import imread

img = imread(file_path) # 返回的是 ndarray

  

标签:PIL,读取,img,Image,cv2,Pillow,opencv,pillow
From: https://www.cnblogs.com/Li-JT/p/16838192.html

相关文章

  • 【AGC013D】Piling Up(神奇的dp)
    考场上用了一种奇怪的做法,不知道为什么就对了,考完后仔细想才想明白。很巧妙的一种dp方式。首先发现每次操作是拿一个球、放两个球、再拿一个球,总球数不变,所以有\(\tex......
  • python cmake 下载失败?   No CMAKE_C_COMPILER could be found.
    1.pipinstallcmake--default-timeout=100-ihttps://pypi.tuna.tsinghua.edu.cn/simple 2.第二个错误: --Buildingfor:VisualStudio162019  --Selectin......
  • openCV抓图片
    importnumpyasnpimportcv2fromPILimportImageGrabfromdemoimportget_XY,classify_hist_with_splitimporttimecap=cv2.VideoCapture(0)#开启摄像头......
  • 【C语言语法】 POJ上奇奇怪怪的Compile error
    【C语言语法】POJ上奇奇怪怪的Compileerror收集中,因为老在\(POJ\)上莫名奇妙地\(CE\),所以记录一下出现过的错误1.不能用万能头文件<bits/stdc++.h>懒癌克星2.不支......
  • OpenCV-Python learning-13.人脸检测
    如下,调用opencv使用摄像头或视频进行人脸检测,也可以在函数​​recognize(img)​​​传入​​img=cv2.imread('face.jpg')​​​。其中,人脸级联分类器xml文件我引用的是anaco......
  • opencv-contrib-python的安装:Set OPENCV_ENABLE_NONFREE CMake option and rebuild th
    问题描述前往本页,可查看opencv-python和opencv-contrib-python的区别。​​https://docs.opencv.org/master/​​比如,SIFT就需要用到opencv-contrib-python包中的cv2.xfeat......
  • OpenCV-Python learning-9.图像阈值处理
    你也可以​​iframe外链​​查看。本节内容包括:常用阈值方法自适应阈值Otsu(大津法)自适应阈值​​github地址​​......
  • OpenCV-Python learning-8.颜色空间
    你也可以​​iframe外链​​查看。本节内容包括:改变色彩空间:cvtColor使用HSV对象跟踪练习......
  • 图像处理:opencv-python给图像加文字
    1.起因计算机视觉中常常会需要在图片上加文字,这样可以增强图像数据的可读性。2.工具opencv-python3.方法importmatplotlib.pyplotaspltfromPILimportImag......
  • Mac安装Opencv带Java版本
    使用Homebrew安装OpenCV4brewinstallopencv进入安装目录cd/usr/local/Cellar/opencv首先检查ApacheAnt有没有安装,没有的话就用homebrew安装:brewinsta......