python cv2.imread()和Image.open()的区别和联系
文章目录
- 1. cv2.imread()
- 1.1 cv2.imread参数说明
- 1.2 注意事项
- 2. Image.open()
- 3. cv2.imread()与Image.open()相互转化
- 3.1 cv2.imread()转成Image.open():Image.fromarray()
- 3.2 Image.open()转成cv2.imread():np.array()
1. cv2.imread()
cv2.imread()读出的数据格式是numpy,默认按照flag=1进行读取。
例:
import cv2img = cv2.imread("img_path")
print(img.shape, type(img))# 显示图像
cv2.imshow("demo", img)# 窗口显示时间,默认0表示无限
cv2.waitKey()# 按任意键销毁窗口
cv2.destoryWindows("demo")>>>输出
(345,678,3) <class.'numpy.ndarray'>
1.1 cv2.imread参数说明
flags:读取图片的方式,可选项
① cv2.IMREAD_COLOR(1):默认方式,3通道BGR彩色图像
② cv2.IMREAD_GRAYSCALE(0):单通道灰度图像
③ cv2.IMREAD_UNCHANGED(-1):原样返回(使用Alpha通道)
④ cv2.IMREAD_ANYDEPTH(2):输入具有相应深度时返回16位/32位图像,否则转为8位
⑤ cv2.IMREAD_ANYCOLOR(4):以任何可能的颜色格式读取
返回值:读取的OpenCV图像,nparray多维数组
1.2 注意事项
⑴ OpenCV中彩色图像使用BGR格式,而PIL、PyQt、matplotlib等库使用的是RGB格式。
import cv2# 方法1:BGR 转 RGB
img = img[:, :, ::-1]# 方法2:BGR 转 RGB
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
⑵ cv2.imread()如果无法从指定文件读取图像,并不会报错,而是返回一个空矩阵。
⑶ 在python3中不支持图片的路径和文件名为中文或者有空格,当必须使用中文可以用cv2.imdecode()处理。
例:
import cv2imgFile = './images/测试.jpg'# cv2.imread(imgFile) 读取失败但不会报错img = cv2.imdecode(np.fromfile(imgFile, dtype=np.uint8), -1)
⑷ 读取图像时默认忽略透明通道,但可以使用CV_LOAD_IMAGE_UNCHANGED参数读取透明通道。
2. Image.open()
Image.open()返回值是PIL类型格式,可以直接图片展示,但不能直接读取其中的像素点值。
例:
from PIL import Imageimg = Image.open('./image9.jpg')
print(img, img.size)
img.show()>>>输出
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=1920x1080 at 0x222AD1D4160> (1920, 1080)
3. cv2.imread()与Image.open()相互转化
3.1 cv2.imread()转成Image.open():Image.fromarray()
import cv2
from PIL import Imageimg_cv2 = cv2.imread('img_path')# 方法1
img_cv2 = img_cv2[:, :, ::-1]# 方法2
img_cv2 = cv2.cvtColor(img_cv2, cv2.COLOR_BGR2RGB)img_PIL = Image.fromarray(img_cv2)
3.2 Image.open()转成cv2.imread():np.array()
例:
import cv2
from PIL import Image
import numpy as npimg_PIL = Image.open('img_path')# 方法1
img_PIL = img_PIL[:, :, ::-1]# 方法2
img_PIL = cv2.cvtColor(img_PIL, cv2.COLOR_RGB2BGR)img_cv2 = np.array(img_PIL)
总结:cv2.imread()读出的数据格式是numpy,Image.open()返回值是PIL类型格式。

相关文章:
python cv2.imread()和Image.open()的区别和联系
文章目录 1. cv2.imread()1.1 cv2.imread参数说明1.2 注意事项 2. Image.open()3. cv2.imread()与Image.open()相互转化3.1 cv2.imread()转成Image.open():Image.fromarray()3.2 Image.open()转成cv2.imread():np.array() 1. cv2.imread() cv2.imread()…...
hdlbits系列verilog解答(exams/m2014_q4i)-45
文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 实现以下电路: 二、verilog源码 module top_module (output out);assign out 1b0;endmodule三、仿真结果 转载请注明出处!...
flink源码分析之功能组件(二)-kubeclient
简介 本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。其中kubeclient上一个系列介绍过,为了系列完整性,这里“copy”一下。 kubeclient组件…...
无需API开发,有赞小程序集成广告推广系统,提升品牌曝光
无需API开发,实现有赞小程序与其他系统的连接 有赞小程序作为一个多功能的电子商务解决方案,为商家提供了无需复杂API开发就可以实现系统连接和集成的便捷途径。通过有赞小程序,商家可以轻松实现与各种系统的数据同步和应用互联,…...
CMD - ping
文章目录 前言参数 前言 ping 命令主要测试到达指定 IP 或主机的连通性. 参数 -t: ping 指定的计算机直到中断 -a: 将地址解析为主机名 -n count: 要发送的回显请求数...
数据结构与算法编程题23
设计二叉树的双序遍历算法(双序遍历是指对于二叉树的每一个结点来说,先访问这个结点,再按双序遍历它的左子树,然后再一次访问这个结点,接下来按双序遍历它的右子树) #define _CRT_SECURE_NO_WARNINGS#inclu…...
小程序中的大道理之二--抽象与封装
继续扒 接着 上一篇 的叙述, 健壮性也有了, 现在是时候处理点实际的东西了, 但我们依然不会一步到底, 让我们来看看. 一而再地抽象(Abstraction Again) 让我们继续无视那些空格以及星号等细节, 我们看到什么呢? 我们只看到一整行的内容, 当传入 3 时就有 3 行, 传入 4 时就…...
基于卷积神经网络CNN开发构建HAR人类行为识别Human Activity Recognition【完整代码实践】
行为识别相关的开发实践在我们之前的博文中也有过相关的实践了,感兴趣的话可以自行移步阅读即可:《python实现基于TNDADATASET的人体行为识别》 《UCI行为识别——Activity recognition with healthy older people using a batteryless wearable sensor Data Set》《人体行为…...
excel自己记录
1、清除换行符号 2、添加特殊符号&并清除换行符号 7日&15日&30日&60日 3、判断单元格最后一个字符是不是数字,不是就删掉 IF(ISNUMBER(--RIGHT(B2,1)),B2,SUBSTITUTE(B2,RIGHT(B2,1),"")) ISNUMBER(--RIGHT(B2,1))判断最右边的一个数是否…...
vcsa6.7 5480无法登录
停电维护硬件后,发现vcsa异常,https://ip:5480无法登录,https://ip/ui正常,ssh登录页正常 kb资料 通过端口 5480 登录到 VMware vCenter Server Appliance Web 控制台失败 (2120477) 操作过程 Connecting to 192.16.20.31:22..…...
CSS 属性列表
CSS属性列表 序号 属性类别 属性 描述 1 动画属性 keyframes 定义一个动画,keyframes定义的动画名称用来被animation-name所使用。 2 animation 复合属性。检索或设置对象所应用的动画特效。 3 animation-name 检索或设置对象所应用的动画名称 ,必须与规则keyfra…...
浅谈能源智能管理系统在大学高校中的应用
安科瑞 华楠 摘要:结合深圳南方科技大学能效系统工程设计实例,针对校园中电耗、热量消耗、冷量消耗及水资源消耗数据的采集、传输、分析管理系统,分析了系统中的水、电、气在高校中的能耗分布,并阐述了节能应用方案,可…...
脚本自动化定制开发:实现高效工作的魔法钥匙
在当今这个快节奏的工作环境中,自动化已成为提高工作效率的黄金标准。如果你是一名Windows用户,那么通过Windows脚本自动化,你可以将你的工作流程化繁为简,实现高效工作。而在众多Windows脚本自动化工具中,Python以其简…...
使用websocket获取thingsboard设备的实时数据
背景 有一个读者前来咨询,如何实时获取设备的遥测数据。 其实tb是有提供websocket接口来获取设备数据的。而且还支持js跨域调用。下面给大家演示一下。 websocket地址 完整代码 <!DOCTYPE HTML> <html><h...
使用Linux JumpServer堡垒机本地部署与远程访问
🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 安装Jump server二. 本地访问jump server三. 安装 cpolar内网穿透软件四. 配…...
js的防抖与节流
目录 一、防抖 实现方式 二、节流 实现方式 一、防抖 所谓防抖,单位时间内,某个动作只能执行矗后一次,可以用在搜索框业务中。 性能优化的手段 防抖 --- 在同一时间内 频繁触发事件,只处理最后一次 实现方式 1、用第三方库Lodash防抖的…...
中职组网络安全-Windows操作系统渗透测试 -20221219win(环境+解析)
B-4:Windows操作系统渗透测试 任务环境说明: 服务器场景:20221219win 服务器场景操作系统:Windows(版本不详)(封闭靶机) 1.通过本地PC中渗透测试平台Kali对服务器场景Server08进行系统服务及版本扫描渗透测试,并将该操作显示结果中1433端口对应的服务版本信息作为F…...
git本地账户如何从一台电脑迁移到另外一台
为了表述方便,我们此处用旧电脑、新电脑指代。 在新电脑上安装git 例如,我旧电脑上安装的git版本是2.33.1版本,新电脑安装git的版本是2.43.0,这不妨碍迁移。 将git的全局配置文件从旧电脑拷贝到新电脑 Git的全局配置文件&…...
HOOPS Web平台助力开发3D应用,实现超大规模3D web轻量化渲染与数据格式转换!
一、包含的软件开发工具包 HOOPS Web平台帮助开发人员构建基于Web的工程应用程序,提供高级3D Web可视化、准确快速的CAD数据访问和3D数据发布。 HOOPS Web平台包括三个集成软件开发工具包 (SDK): (1)Web端3D可视化引擎 HOOPSCom…...
GDB Debugging Notes
1 Debugging programs using gdb 1.1 gdb简介 gdb是一个功能强大的调试工具,可以用来调试C程序或C程序。在使用这个工具进行程序调试时,主要涉及下面几个方面的操作: 启动程序:在启动程序时,可以设置程序运行环境。设置断点:程序…...
如何3分钟解决百度网盘提取码难题:baidupankey完全指南
如何3分钟解决百度网盘提取码难题:baidupankey完全指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾因找不到百度网盘提取码而错过重要资源?当朋友分享学习资料、同事发送工作文件ÿ…...
【Linux】进程(2)状态
目录 一、冯诺依曼 二、操作系统 三、进程状态 (1)运行状态:进程已获得CPU资源,正在执行指令,是进程生命周期中唯一能直接操作硬件、推进任务的阶段。 (2)阻塞状态:进程因等待特…...
别再只盯着参数量了!用thop给你的PyTorch模型(比如YOLOv8)算算真正的计算开销
别再只盯着参数量了!用thop给你的PyTorch模型(比如YOLOv8)算算真正的计算开销 在AI模型开发中,参数量(Params)常被视为衡量模型复杂度的黄金标准。但当你尝试将模型部署到边缘设备时,可能会发现…...
像素史诗·智识终端Java开发环境快速配置:基于镜像的一站式解决方案
像素史诗智识终端Java开发环境快速配置:基于镜像的一站式解决方案 1. 为什么选择镜像部署Java开发环境 对于Java开发者来说,环境配置一直是个头疼的问题。不同版本的JDK、Maven仓库配置、IDE插件安装...这些繁琐的准备工作往往要耗费半天甚至更长时间。…...
3步实现CATIA几何特征智能识别:工业软件二次开发提升设计效率指南
3步实现CATIA几何特征智能识别:工业软件二次开发提升设计效率指南 【免费下载链接】pycatia python module for CATIA V5 automation 项目地址: https://gitcode.com/gh_mirrors/py/pycatia 在现代CAD设计流程中,工程师经常需要处理大量重复的几何…...
JS逆向实战:Hook技术对抗与绕过无限Debugger的防御策略
1. 无限Debugger的常见类型与原理剖析 第一次遇到无限Debugger时,我正试图抓取某电商网站的价格数据。刚打开开发者工具,页面就像卡死的音乐盒一样不断弹出调试窗口,鼠标根本来不及点"继续执行"。这种防御机制看似无解,…...
从浏览器到服务器:图解HttpServletResponse如何操控文件流(原理+实践)
HTTP文件流传输的底层机制与高效实践 当你在浏览器中点击一个下载链接时,看似简单的操作背后隐藏着一系列精妙的协议交互和数据流动过程。作为开发者,理解HttpServletResponse如何操控文件流不仅能够优化文件传输性能,还能解决实际开发中的各…...
区块链系统设计思考
区块链系统设计思考:构建信任与效率的未来 区块链技术自诞生以来,以其去中心化、不可篡改和透明性等特性,重塑了金融、供应链、物联网等领域的信任机制。设计一个高效、安全且可扩展的区块链系统并非易事,需要从多个维度进行深入…...
终极指南:如何用stacktrace.js构建企业级前端错误监控系统
终极指南:如何用stacktrace.js构建企业级前端错误监控系统 【免费下载链接】stacktrace.js Generate, parse, and enhance JavaScript stack traces in all web browsers 项目地址: https://gitcode.com/gh_mirrors/st/stacktrace.js stacktrace.js是一款强大…...
Material Icon Library自定义开发:如何扩展图标库和创建个性化图标
Material Icon Library自定义开发:如何扩展图标库和创建个性化图标 【免费下载链接】material-icon-lib Library containing over 2000 material vector icons that can be easily used as Drawable or as a standalone View. 项目地址: https://gitcode.com/gh_m…...
