Image.open()_image.open函数

Image.open()_image.open函数文章目录1导入库2图像读取3读入图片类型4通道5显示方法6相互转换Image.open()和ci2.imread()都是用来读取的图像,但在使用过程中存在一些差别。具体,可以从以下几个角度进行分析:1导入库导入的包不同。img=cv2.imread(path),这是opencv中的处理图片的函数,使用时需importcv2img=Image.open(path),这是PIL中的一个处理图片的函数,使用时需fromPILimportImage#opencv-py

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Image.open()和ci2.imread()都是用来读取的图像,但在使用过程中存在一些差别。具体,可以从以下几个角度进行分析:

1 导入库

导入的包不同。
img = cv2.imread(path),这是opencv中的处理图片的函数,使用时需 import cv2
img = Image.open(path),这是PIL中的一个处理图片的函数,使用时需 from PIL import Image

# opencv-python
import cv2

# PIL
from PIL import Image

2 图像读取

# opencv-python
img = cv2.imread('' ---.jpg'')
img = cv2.imread('' ---.jpg'', flages=cv2.IMREAD_GRAYSCALE)     # flags是可选读入模式,如灰度图等,默认为None

# PIL
img = Image.open("---.jpg")
img = Image.open("---.jpg", mode=‘r’ ) # mode只能且默认是‘r’,

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

img = Image.open("lena.jpg")
img = img.load()
print(img[0,0])
# result:(255, 201, 166)

3 读入图片类型

Image.open()得到的img数据类型呢是Image对象,不是普通的数组。
cv2.imread()得到的img数据类型是np.array()类型。

4 通道

对于Image.open()函数默认彩色图像读取通道的顺序为RGB,而cv2.imread()读取通道的顺序为BGR。同时,当图像格式为RGBA时,Image.open(‘—.jpg’)读取的格式为RGBA(其中A表示图像的alpha通道,即RGBA共四个通道),而cv2.imread(’—.jpg’)读取的格式是BGR,只有三个通道。
通过使用cv2.split(img)可得到cv2.imread()读取的图片img的BGR通道值。即使图片是RGBA四通道,cv2.imread()方法仍然读取的是BGR三通道。

5 显示方法

图像显示时常见方法有两种,一种是matplotlib的plt.imshow()方法,一种是opencv的cv2.imshow()。两个函数的输入都要求是数组。因此Image读取的图片要先转化为数组,再进行图片的显示。plt函数读入的顺序为RGB,cv2.imshow()读入的顺序是BGR。因此image与plt.imshow()配合使用,opencv的方法配套使用。

6 相互转换

#1.Image对象->cv2(np.adarray)

img = Image.open(path)

img_array = np.array(img)


#2.cv2(np.adarray)->Image对象

img = cv2.imread(path)

img_Image = Image.fromarray(np.uint8(img))
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181944.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 服务器seo优化,SEO诊断之网站服务器优化「建议收藏」

    服务器seo优化,SEO诊断之网站服务器优化「建议收藏」前一章节子凡已经通过网站域名检查做过最基础的SEO诊断,接下来也是网站SEO诊断中最基础,也是较为重要的要素,没有域名,没有服务器,网站就无处容身,也就不会存在子凡分享的SEO话题了。一、网站服务器速度的重要性在网站速度方面我们要求自己的网站速度当然是越快越好,如果网站打开速度在5~40毫秒是为最佳效果。假设你的网站打开速度基本都在100ms左右,对于个人博客或者网站算是比较给力…

    2025年12月11日
    0
  • wget 安装yum_没有yum命令

    wget 安装yum_没有yum命令wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP下载,并可以使用HTTP代理。”wget”这个名称来源于“WorldWideWeb”与“get”的结合。在线安装wget使用命令yum-yinstallwget

    2022年10月17日
    3
  • 电容分类_电解电容和薄膜电容的区别

    电容分类_电解电容和薄膜电容的区别一、按照功能  1.名称:聚酯(涤纶)电容   符号:(CL)  电容量:40p–4μ  额定电压:63–630V  主要特点:小体积,大容量,耐热耐湿,稳定性差  应用:对稳定性和损耗要求不高的低频电路  2.名称:聚苯乙烯电容  符号:(CB)  电容量:10p–1μ  额定电压:100V–30KV

    2022年8月22日
    6
  • 小强学Python+OpenCV之-1.3绘图

    小强学Python+OpenCV之-1.3绘图

    2022年3月3日
    52
  • ts 视频下载[通俗易懂]

    ts 视频下载[通俗易懂]importurllib.requestimportrequests,os,threadingfromCrypto.CipherimportAESfromsrc.Pacho.moviePa.tsdownloadimportaes_decodeclassm3u8down(object):def__init__(self,url,listheaders,dicheaders):self.url=url#这里的url是index.m3.

    2022年7月18日
    19
  • settime和setinterval_setinterval是异步还是同步

    settime和setinterval_setinterval是异步还是同步setTimeout和setInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。这两个函数的区别是:setInterval在执行完一次代码之后,经过了那个固定的时间间隔,它还会自动重复执行代码,而setTimeout只执行一次那段代码。有一次我没有分清,使用了setInterval,导致电脑崩溃了。setTimeout表面上是只执行一次,只是起到延迟作用。但是也可以通过创建一个函数循环重复调用…

    2022年10月4日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号