Python中Opencv和PIL.Image读取图片的差异对比

news/2024/5/19 16:10:37/文章来源:https://blog.csdn.net/FaithWh/article/details/129327058

近日,在进行深度学习进行推理的时候,发现不管怎么样都得不出正确的结果,再仔细和正确的代码进行对比了后发现原来是Python中不同的库读取的图片数组是有差异的。

image = np.array(Image.open(image_file).convert('RGB'))
image = cv2.imread(image_file)

上面第一行代码就是导致错误出现的原因,我把代码改成第二行代码模型就能够正确的推理了。(巨坑),以后谨记,在使用Python读取图片的时候最好使用OpenCV来读取。

下面给出两种方式读取图片具体的差异,内容来自:Opencv和PIL.Image读取图片的区别_陆杰呀的博客-CSDN博客。

imshow

1、Opopencv  : cv2.imshow()采用BGR模式,通过cv2.imread()读取;
2、matplotlib.pyplot  : plt.imshow() 采用RGB模式,   通过plt.imread()读取;
3、PIL.Image :  img.show()  采用RGB模式, 通过Image.open()读取;img对图片对象
备注:通过cv2.VideoCapture方法来读取video的frame,得到的frame的通道顺序是BGR的!!!

下面一组图依次是:img、plt.imshow(cv_img)、Img_img.show()、plt.imshow(plt_img) 

 

 cv2(BGR)

# img为BGR通道
img = cv2.imread(img_path, mode) # mode = [1, 0, -1]依次表示彩色、灰度、彩色+alpha, 默认为1;
cv2.imshow('test', img)
cv2.waitKey(0) # 保持图形界面,直到你在终端输入任意字符
cv2.destroyAllWindows()

PIL.Image(RGB)

img = Image.open(img_path)
img.show()

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))


 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_77084.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot实现Excel导入导出,简单好用

EasyPoi简介 POI是Java操作MicroOffice(如对Excel的导入导出)的一个插件。POI的全称是(Poor Obfuscation Implementation),POI官网地址是 http://poi.achache.org/index.html 。 EasyPoi对POI进行了优化,…

Navicat 现已支持 OceanBase 全线数据库产品

Navicat 作为 OceanBase 生态工具的合作伙伴,这是双方产品适配第三个里程碑。2022 年 7 月的首个里程碑,Navicat 实现了 OceanBase 社区版的功能性兼容。同年10 月,进一步实现了针对 OceanBase 企业版( 兼容 MySQL 模式&#xff0…

嵌入式学习笔记——STM32单片机开发前的准备

STM32单片机开发前的准备1.集成开发环境的选取STM32 CubeIDEKEIL_MDK2.KEIL_MDK环境搭建安装包获取及安装芯片包下载及安装工程建立(STM32F407VET6为例)1.新建工程文件夹2.新建工程3.安装ST-LINK以及CH340的驱动4.设置KEIL,并烧录本文重点1.集成开发环境的选取 前面…

使用Containerd搭建K8s集群【v1.25】

[toc] 一、安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多集群中所有机器之间网络互通可以访问外网,需要拉取镜像禁止swap分区二、准备环境 角色IP…

权限管理系统设计——入门(一)

权限管理系统设计——入门(一) 后续更新中… 概念 1、身份认证:用户是否是合法。 2、限制资源访问:根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源。 3、用途广:出现在任何…

MySQL中varchar(M)存储字符串过长

最近写项目&#xff0c;数据库报了一个错&#xff0c;错误原因是MySQL中存储的字符串过长最近在学MySQL的基础&#xff0c;刚好学到了关于varchar类型要存储的字符串是 “<p>12121212121212</p>\n<p><img src\"https://zzjzzjzzjbucket.oss-cn-hangz…

【markdown】markdown语法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

【iobit 软件】家族系列 - 正版激活码

装机必备iobit系列软件 - 激活码获取看最后 第一款、Advanced SystemCare 16 您需要的人工智能驱动的PC优化器&#xff0c;以释放磁盘空间&#xff0c;加速PC并保护在线隐私。 功能特点&#xff1a; 1. 系统清理与优化&#xff1a;通过清除系统垃圾文件、注册表信息、无用文…

【halcon】模板匹配参数之金字塔级数

背景 今天&#xff0c;在使用模板匹配的时候&#xff0c;突然程序卡死&#xff0c;CPU直接飙到100%。最后排查发现是模板匹配其中一个参数 NumLevels 导致的&#xff1a; NumLevels: The number of pyramid levels used during the search is determined with numLevels. If n…

appium的安装详解

安装appium 爬虫手机APP需要实现自动化&#xff0c;所以要使用appnium来实现点击&#xff0c;输入&#xff0c;滑动等操作。由于appnium的安装较为繁琐&#xff0c;所以特意整理一篇文章来展示安装的详细过程过程中。 安装appnium共有3个步骤 安装 Android SDK安装 JDK安装 …

总结篇 字符串设备(一)

简介 1、字符设备是Linux驱动中最基本的一类设备驱动&#xff0c;字符设备就是一个个字节&#xff0c;按照字节流进行读写操作的设备。&#xff08;例&#xff1a;按键&#xff0c;电池等&#xff0c;IIC,SPI&#xff0c;LCD&#xff09;。这些设备的驱动就叫字符设备驱动。 在…

【蓝桥杯嵌入式】拓展板之数码管显示

文章目录硬件电路连接方式函数实现文章福利硬件电路 通过上述原理图&#xff0c;可知拓展板上的数码管是一个共阴数码管&#xff0c;也就是说某段数码管接上高电平时&#xff0c;就会点亮。   上述原理图还给出一个提示&#xff0c;即&#xff1a;三个数码管分别与三个74HC59…

【JAVA程序设计】【C00110】基于SSM(非maven)的车辆维修管理系统

基于SSM&#xff08;非maven&#xff09;的车辆维修管理系统项目简介项目获取开发环境项目技术运行截图项目简介 基于ssm框架非maven开发的车辆维修管理系统共分为三个角色&#xff1a;管理员、用户 管理员角色包含以下功能&#xff1a; 查看用户、添加用户、查看车辆信息、故…

MyBatisPlus 批量添加

文章目录现状优化效果现状 一般来说&#xff0c;批量插入可以使用 MyBatisPlus 中 ServiceImpl 自带的方法 saveBatch 打开 sql 日志&#xff0c;application.yml 添加配置&#xff0c;mapper-locations 配置 mapper 路径 mybatis-plus:configuration:log-impl: org.apache.i…

windows安装tomcat

这里写自定义目录标题tomcat官网下载安装包并解压环境变量配置启动tomcat访问http://localhost:8080/修复启动出现乱码问题tomcat官网下载安装包并解压 环境变量配置 系统环境变量新增&#xff1a; 变量名&#xff1a;CATALINA_HOME 变量值&#xff1a;tomcat的安装目录 编辑…

三八节买什么数码好物?三八女神节实用不吃灰的数码好物推荐

三八节快到了&#xff0c;在这个小节日里&#xff0c;有哪些实用性强的数码好物值得入手呢&#xff1f;针对这个问题&#xff0c;我来给大家推荐几款实用性超强的数码好物&#xff0c;一起来看看吧。 一、蓝牙耳机 推荐产品&#xff1a;南卡小音舱 参考价&#xff1a;239 南…

【强化学习】强化学习数学基础:蒙特卡洛方法

强化学习数学方法&#xff1a;蒙特卡洛方法举个例子举个例子1&#xff1a;投掷硬币The simplest MC-based RL algorithm举个例子2&#xff1a;Episode lengthUse data more efficientlyMC without exploring starts总结内容来源将value iteration和policy iteration方法称为mod…

LiveGBS国标GB/T28181国标视频流媒体平台-功能报警订阅配置报警预案告警截图及录像

LiveGBS国标GB/T28181国标视频流媒体平台-功能报警订阅配置报警预案告警截图及录像1、报警信息1.1、报警查询1.2、配置开启报警订阅1.2.1、国标设备编辑1.2.2、选择开启报警订阅1.3、配置摄像头报警1.3.1、配置摄像头报警通道ID1.3.2、配置摄像头开启侦测1.3.3、尝试触发摄像头…

《QDebug 2023年2月》

一、Qt Widgets 问题交流 二、Qt Quick 问题交流 三、其他 1.使用 QDir::toNativeSeparators() 转换路径中的 "/" 分割符为 "\" 在网上抄代码的时候&#xff0c;总会遇到这样的代码&#xff1a; file_path.replace("/", "\\"); …

图论初入门

目录 一、前言 二、图的概念 三、例题及相关概念 1、全球变暖&#xff08;2018年省赛&#xff0c;lanqiao0J题号178&#xff09; 2、欧拉路径 3、小例题 4、例题&#xff08;洛谷P7771&#xff09; 一、前言 本文主要讲了树与图的基本概念&#xff0c;图的存储、DFS遍历…