当前位置: 首页 > news >正文

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()&#xff1a;Image.fromarray()3.2 Image.open()转成cv2.imread()&#xff1a;np.array() 1. cv2.imread() cv2.imread()…...

hdlbits系列verilog解答(exams/m2014_q4i)-45

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 实现以下电路&#xff1a; 二、verilog源码 module top_module (output out);assign out 1b0;endmodule三、仿真结果 转载请注明出处&#xff01;...

flink源码分析之功能组件(二)-kubeclient

简介 本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。其中kubeclient上一个系列介绍过,为了系列完整性,这里“copy”一下。 kubeclient组件…...

无需API开发,有赞小程序集成广告推广系统,提升品牌曝光

无需API开发&#xff0c;实现有赞小程序与其他系统的连接 有赞小程序作为一个多功能的电子商务解决方案&#xff0c;为商家提供了无需复杂API开发就可以实现系统连接和集成的便捷途径。通过有赞小程序&#xff0c;商家可以轻松实现与各种系统的数据同步和应用互联&#xff0c;…...

CMD - ping

文章目录 前言参数 前言 ping 命令主要测试到达指定 IP 或主机的连通性. 参数 -t: ping 指定的计算机直到中断 -a: 将地址解析为主机名 -n count: 要发送的回显请求数...

数据结构与算法编程题23

设计二叉树的双序遍历算法&#xff08;双序遍历是指对于二叉树的每一个结点来说&#xff0c;先访问这个结点&#xff0c;再按双序遍历它的左子树&#xff0c;然后再一次访问这个结点&#xff0c;接下来按双序遍历它的右子树&#xff09; #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、判断单元格最后一个字符是不是数字&#xff0c;不是就删掉 IF(ISNUMBER(--RIGHT(B2,1)),B2,SUBSTITUTE(B2,RIGHT(B2,1),"")) ISNUMBER(--RIGHT(B2,1))判断最右边的一个数是否…...

vcsa6.7 5480无法登录

停电维护硬件后&#xff0c;发现vcsa异常&#xff0c;https://ip:5480无法登录&#xff0c;https://ip/ui正常&#xff0c;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…...

浅谈能源智能管理系统在大学高校中的应用

安科瑞 华楠 摘要&#xff1a;结合深圳南方科技大学能效系统工程设计实例&#xff0c;针对校园中电耗、热量消耗、冷量消耗及水资源消耗数据的采集、传输、分析管理系统&#xff0c;分析了系统中的水、电、气在高校中的能耗分布&#xff0c;并阐述了节能应用方案&#xff0c;可…...

脚本自动化定制开发:实现高效工作的魔法钥匙

在当今这个快节奏的工作环境中&#xff0c;自动化已成为提高工作效率的黄金标准。如果你是一名Windows用户&#xff0c;那么通过Windows脚本自动化&#xff0c;你可以将你的工作流程化繁为简&#xff0c;实现高效工作。而在众多Windows脚本自动化工具中&#xff0c;Python以其简…...

使用websocket获取thingsboard设备的实时数据

背景 有一个读者前来咨询,如何实时获取设备的遥测数据。 其实tb是有提供websocket接口来获取设备数据的。而且还支持js跨域调用。下面给大家演示一下。 websocket地址 完整代码 <!DOCTYPE HTML> <html><h...

使用Linux JumpServer堡垒机本地部署与远程访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装Jump server二. 本地访问jump server三. 安装 cpolar内网穿透软件四. 配…...

js的防抖与节流

目录 一、防抖 实现方式 二、节流 实现方式 一、防抖 所谓防抖&#xff0c;单位时间内&#xff0c;某个动作只能执行矗后一次&#xff0c;可以用在搜索框业务中。 性能优化的手段 防抖 --- 在同一时间内 频繁触发事件,只处理最后一次 实现方式 1、用第三方库Lodash防抖的…...

中职组网络安全-Windows操作系统渗透测试 -20221219win(环境+解析)

B-4:Windows操作系统渗透测试 任务环境说明: 服务器场景:20221219win 服务器场景操作系统:Windows(版本不详)(封闭靶机) 1.通过本地PC中渗透测试平台Kali对服务器场景Server08进行系统服务及版本扫描渗透测试,并将该操作显示结果中1433端口对应的服务版本信息作为F…...

git本地账户如何从一台电脑迁移到另外一台

为了表述方便&#xff0c;我们此处用旧电脑、新电脑指代。 在新电脑上安装git 例如&#xff0c;我旧电脑上安装的git版本是2.33.1版本&#xff0c;新电脑安装git的版本是2.43.0&#xff0c;这不妨碍迁移。 将git的全局配置文件从旧电脑拷贝到新电脑 Git的全局配置文件&…...

HOOPS Web平台助力开发3D应用,实现超大规模3D web轻量化渲染与数据格式转换!

一、包含的软件开发工具包 HOOPS Web平台帮助开发人员构建基于Web的工程应用程序&#xff0c;提供高级3D Web可视化、准确快速的CAD数据访问和3D数据发布。 HOOPS Web平台包括三个集成软件开发工具包 (SDK)&#xff1a; &#xff08;1&#xff09;Web端3D可视化引擎 HOOPSCom…...

GDB Debugging Notes

1 Debugging programs using gdb 1.1 gdb简介 gdb是一个功能强大的调试工具&#xff0c;可以用来调试C程序或C程序。在使用这个工具进行程序调试时&#xff0c;主要涉及下面几个方面的操作&#xff1a; 启动程序:在启动程序时&#xff0c;可以设置程序运行环境。设置断点:程序…...

如何3分钟解决百度网盘提取码难题:baidupankey完全指南

如何3分钟解决百度网盘提取码难题&#xff1a;baidupankey完全指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾因找不到百度网盘提取码而错过重要资源&#xff1f;当朋友分享学习资料、同事发送工作文件&#xff…...

【Linux】进程(2)状态

目录 一、冯诺依曼 二、操作系统 三、进程状态 &#xff08;1&#xff09;运行状态&#xff1a;进程已获得CPU资源&#xff0c;正在执行指令&#xff0c;是进程生命周期中唯一能直接操作硬件、推进任务的阶段。 &#xff08;2&#xff09;阻塞状态&#xff1a;进程因等待特…...

别再只盯着参数量了!用thop给你的PyTorch模型(比如YOLOv8)算算真正的计算开销

别再只盯着参数量了&#xff01;用thop给你的PyTorch模型&#xff08;比如YOLOv8&#xff09;算算真正的计算开销 在AI模型开发中&#xff0c;参数量&#xff08;Params&#xff09;常被视为衡量模型复杂度的黄金标准。但当你尝试将模型部署到边缘设备时&#xff0c;可能会发现…...

像素史诗·智识终端Java开发环境快速配置:基于镜像的一站式解决方案

像素史诗智识终端Java开发环境快速配置&#xff1a;基于镜像的一站式解决方案 1. 为什么选择镜像部署Java开发环境 对于Java开发者来说&#xff0c;环境配置一直是个头疼的问题。不同版本的JDK、Maven仓库配置、IDE插件安装...这些繁琐的准备工作往往要耗费半天甚至更长时间。…...

3步实现CATIA几何特征智能识别:工业软件二次开发提升设计效率指南

3步实现CATIA几何特征智能识别&#xff1a;工业软件二次开发提升设计效率指南 【免费下载链接】pycatia python module for CATIA V5 automation 项目地址: https://gitcode.com/gh_mirrors/py/pycatia 在现代CAD设计流程中&#xff0c;工程师经常需要处理大量重复的几何…...

JS逆向实战:Hook技术对抗与绕过无限Debugger的防御策略

1. 无限Debugger的常见类型与原理剖析 第一次遇到无限Debugger时&#xff0c;我正试图抓取某电商网站的价格数据。刚打开开发者工具&#xff0c;页面就像卡死的音乐盒一样不断弹出调试窗口&#xff0c;鼠标根本来不及点"继续执行"。这种防御机制看似无解&#xff0c;…...

从浏览器到服务器:图解HttpServletResponse如何操控文件流(原理+实践)

HTTP文件流传输的底层机制与高效实践 当你在浏览器中点击一个下载链接时&#xff0c;看似简单的操作背后隐藏着一系列精妙的协议交互和数据流动过程。作为开发者&#xff0c;理解HttpServletResponse如何操控文件流不仅能够优化文件传输性能&#xff0c;还能解决实际开发中的各…...

区块链系统设计思考

区块链系统设计思考&#xff1a;构建信任与效率的未来 区块链技术自诞生以来&#xff0c;以其去中心化、不可篡改和透明性等特性&#xff0c;重塑了金融、供应链、物联网等领域的信任机制。设计一个高效、安全且可扩展的区块链系统并非易事&#xff0c;需要从多个维度进行深入…...

终极指南:如何用stacktrace.js构建企业级前端错误监控系统

终极指南&#xff1a;如何用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自定义开发&#xff1a;如何扩展图标库和创建个性化图标 【免费下载链接】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…...