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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux开启校时服务,NTP校时服务

    linux开启校时服务,NTP校时服务NetworkTimeProtocol(NTP)是用来使计算机时间同步的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)进行同步,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可通过加密确认的方式来防止恶意攻击。学院NTP校时服务基于NTP网络协议搭建,为全校提供精准的校时服务,其默认使用UDP协议的123端口。Windows用户使用方法:…

    2022年6月29日
    25
  • mysql联合索引失效

    mysql联合索引失效联合索引,能够缩小查询范围的字段放在第一个,比如表sensor_coc_repay_feature存近一个月数据两千多万条,建立联合索引(time,distinct_id),按照查询select*fromsensor_coc_repay_featurewheredistinct_id=%sandtime>‘2022-02-20’,此时然后按照联合索引最左匹配有使用到了time,distinct_id,但是经过time查询后的数据还会是全表,mysql会认为该查询还不如走全表查询

    2022年9月4日
    7
  • zendframework报错处理

    zendframework报错处理

    2021年8月21日
    46
  • 如何完成一张机房3d效果图

    如何完成一张机房3d效果图制作机房3D效果图作者:西安曼笛文化传播有限公司     赵希希 随着信息技术的不断发展,网络的更新,平安城市的规划,大量数据中心的建设,机房监控软件也慢慢的推进,机房效果图也有很大的改进。 从cad到简易的效果图在到成熟的3d效果图.如下图1;图2;图3所示:图1图2图3现在的机房效果图不光体现整体的图形,材质,还有会体现很多细节:

    2022年6月2日
    34
  • 请描述django模板中标签的作用?_抽奖券模板

    请描述django模板中标签的作用?_抽奖券模板常用的模板标签if标签if标签相当于Python中的if语句,有elif和else相对应,但是所有的标签都需要用标签符号({%%})进行包裹。if标签中可以使用==、!=、<、<=、&

    2022年7月29日
    2
  • centos 安装和配置mariadb详细教程[通俗易懂]

    centos 安装和配置mariadb详细教程[通俗易懂]1.安装mariadatabaseCentos8上,默认安装的mariadb服务器版本为:MariaDBCommunityServer10.3dnfinstallmariadb-server命令进行安装就可以了。dnfinstallmariadb-server2.启动mariadatabasesystemctlstartmariadb3.查看mariadatabase运行状态通过命令查看运行数据库的版本:systemctlstat..

    2022年5月30日
    41

发表回复

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

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