【OpenCV】(二)—— 图片读取展示和保存

news2024/11/25 0:10:17

上一小节中我们成功安装了opencv,我们这次学习使用opencv最基础的功能,读取和展示图片,首先准备一张用于实验的样例图片【cat.jpg】如下:

在这里插入图片描述

然后就是创建一个python项目并导入相关依赖

import cv2

读取图片

读取图片使用imread方法,其函数原型如下:

cv2.imread(filename, flags=1)

通过flags指定读取方式,读取filename指定的文件,返回一个 NumPy 数组,其中的flags指定的图片读取方式有以下几种:

  • cv2.IMREAD_GRAYSCALE 或 0:以灰度模式读取图像。
  • cv2.IMREAD_UNCHANGED 或 -1:以原始图像格式读取,包括 alpha 通道(如果有)。
  • cv2.IMREAD_COLOR 或 1:以 BGR 彩色模式读取图像(默认)。
  • cv2.IMREAD_ANYDEPTH 或 4:如果图像有更深的颜色(如 16 位/像素),则保留这些信息。
  • cv2.IMREAD_ANYCOLOR 或 8:尝试根据图像文件中的颜色信息读取图像。

【示例】:读取【cat.jpg】图像信息,注意我这里是将这张图放在了项目的根目录,如果不是的话需要指定正确的路径+文件名

# 读取图片
img = cv2.imread("cat.jpg")

我们还没有学习如何展示图片,可以先看一下这个img的存储信息

print('img')

之前你可能接触到图片的存储模式为RGB三维,但在cv2的读取中是BGR,道理是一样的,只是顺序不同

在这里插入图片描述

展示图片

opencv中展示图片的方法主要是imshow,其原型如下:

cv2.imshow(winname, mat)

参数说明

  • winname: 字符串类型,指定显示图像的窗口名称。窗口名称必须是唯一的,不同的图像可以使用不同的窗口名称来显示。
  • mat: NumPy 数组,表示要显示的图像数据。图像数据通常是由 cv2.imread() 或其他图像处理函数生成的。

imshow方法还需要和一些其它方法共同配合使用,主要为waitkey和destroyAllWindows

cv2.waitKey(delay)
  • delay: 整数类型,指定等待的时间,单位为毫秒。如果值大于0,则函数会等待指定的毫秒数,之后继续执行。如果值为0,则函数会无限期地等待,直到用户按键为止,就是我们常见的按下任意键执行后续操作。
cv2.destroyAllWindows()

调用 cv2.destroyAllWindows() 会关闭所有当前打开的 OpenCV 窗口。这包括通过 cv2.imshow() 创建的所有窗口。关闭窗口不仅清除了屏幕上的显示,还释放了与这些窗口相关的系统资源,有助于避免内存泄漏。

【示例】展示上一小节中读取的img信息

# opencv展示图片,cat指定展示窗口名字,img为展示对象,可以进行多个窗口的展示
cv2.imshow("cat",img)
# 等待时间,0表示按任意键
cv2.waitKey(0)
# 等待之后执行的操作,关闭所有展示窗口
cv2.destroyAllWindows()

在这里插入图片描述

我们在后续的图像处理中需要经常查看图像,我们可以将这三行代码集成为一个函数方便后续频繁调用

# 把上面的三行代码整合为一个函数
def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
cv_show('cat1',img)

读取灰度图

imread可以在读取图片的时候指定读取图片的模式,如果不指定的话,默认读取BGR彩色图像,我们还有一个最常用的图片模式就是灰度图,还是上面的示例图,用灰度模式读取并展示一次

# 灰度模式读取图片
img = cv2.imread("cat.jpg",0)
cv_show('catgray',img)

在这里插入图片描述

保存图像

我们刚刚就完成了一次简单的图像处理(彩色——>灰度),但我们的结果只存在于内存之中,保存图像使用的函数为imwight,函数原型如下:

cv2.imwrite(filename, img[, params])

参数说明

  • filename: 字符串类型,指定要保存的文件路径和文件名。可以是相对路径或绝对路径。
  • img: NumPy 数组,表示要保存的图像数据。
  • params: 可选参数,指定编码参数。这些参数通常是一个列表,包含编码格式特定的选项。例如,对于 JPEG 文件,可以指定压缩质量。

【示例】保存刚刚的灰度图

# 保存这张灰度图
cv2.imwrite('catGRAY.jpg',img)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flythings学习(二)控件相关

文章目录 1 前言2 通用属性2.1 控件ID值2.2 控件位置2.3 背景色2.4 背景图2.5 显示与隐藏2.6 控件状态2.7 蜂鸣器控制 3 文本类TextView4 按键类 Button4.1 系统按键4.2 处理按钮长按事件4.3 处理按键触摸事件 5 复选框CheckBox6 单选组 RadioGroup7 进度条,滑块7.1…

vscode如何通过ssh远程链接其它电脑

客户端(本机)linux系统中vscode通过ssh插件远程连接服务器,其操作步骤如下: 配置服务器的配置文件 首先在~/.ssh/config文件中输入服务器的配置信息,如果没有这个文件就新建一个,其内容如下: …

线性系统性能分析方法2——根轨迹法

反馈控制系统的性质取决于闭环传递函数,只要求解出闭环系统的特征根,便能得到系统响应的变化规律。但对于3阶以上的系统求根比较困难。如果系统中有一个可变参数时,求根就更困难了。 1948年,伊凡思提出了一种确定系统闭环特征根的…

ENSP搭建基础网络拓扑图

一、ENSP的基本操作 1、配置网关 进入系统视图与退出 <Huawei>system-view [Huawei]quit 进入G0/0/0接口后配置ip [R1]interface GigabitEthernet 0/0/0 [R1-GigabitEthernet0/0/0]ip address 192.168.1.1 24查询所有接口的ip配置 [R1]display ip interface brief…

02 django管理系统 - base.html模板的搭建

下面&#xff0c;我们正式开始XX市第X医院员工信息管理系统的开发 首先&#xff0c;我们项目的目录结构如下&#xff1a; 然后&#xff0c;先把模板【base.html】界面的框架搭起来 {% load static %}<!DOCTYPE html> <html lang"en"><head><m…

使用最小二乘法画噪声数据的近似曲线

文章目录 问题MATLAB代码验证数据1验证数据2 问题 已知有系列含有噪声的数据&#xff08;x , y&#xff09;用最小二乘法计算m和b。(ymxb) MATLAB代码 disp(This promgram perform a leastsquares fit of an); disp(input data set to a straight line.); n_points input(E…

minio储存应用部署

一、minio简介 MinIO 是一个高性能的对象存储系统&#xff0c;设计用于存储大量的非结构化数据&#xff0c;如图片、视频、日志文件等。它完全兼容 Amazon S3 API&#xff0c;这意味着你可以使用与 S3 相同的工具和接口来管理和访问 MinIO 中的数据。 二、主要特性 1. S3 兼…

Vue3实现面板分割

Vue3实现面板分割 下面是将你提供的 Vue 组件使用 SCSS&#xff0c;并以 Vue 3 的组合式 API 形式的面板分割代码。 1、建立组件相关的文件夹 2、将下面代码拷贝到index.vue中 <template><div class"g-split" ref"gSplit"><!-- 水平方向…

数学建模算法与应用 第15章 预测方法

目录 15.1 微分方程模型 Matlab代码示例&#xff1a;求解简单的微分方程 15.2 灰色预测模型&#xff08;GM&#xff09; Matlab代码示例&#xff1a;灰色预测模型 15.3 自回归模型&#xff08;AR&#xff09; Matlab代码示例&#xff1a;AR模型的预测 15.4 指数平滑法 M…

easyocr 本地部署模型 识别图像 ocr - python 实现

使用 easyocr 本地部署识别图像 ocr ,可以满足简单图像场景的ocr识别。 可以进行 中文、英文 ocr 识别。 安装 python 库 pip install easyocr 识别本地模型下载地址&#xff1a;easyocr本地部署模型识别图像ocr-python实现资源-CSDN文库 也可通过程序直接下载官方链接 识…

计算机的错误计算(一百二十一)

摘要 探讨表达式 “((1/3-0.3333333333333333235)(1/3-0.333333333333333759)*0.008)*10^20” 的计算精度问题。 对于下列算式 若用C编程计算&#xff0c;则输出是错误结果[1]。那么别的语言呢&#xff1f; 例1. 计算 不妨用Java代码计算&#xff1a; public class expres…

el-image预览时和el-table边框出现样式穿透问题处理

el-image预览时和el-table边框出现样式穿透问题处理 如图所示 我们只需要在当前组件加一个css即可解决问题 <style lang"scss" scoped> :deep(.el-table__cell) {position: static !important; } </style>

Django学习笔记之Django基础学习

Django笔记 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录…

黑马程序员 javaWeb基础学习,精细点复习【持续更新】

文章目录 WEB开发一、HTML1.html介绍 二、CSS1.CSS介绍2.CSS导入方式3.CSS选择器4.CSS属性 三、JavaScript1.介绍2.浏览器3.js的三种输出方式4.js定义变量5.js数据类型6.js运算符7.全局函数8.函数定义9.js数组对象10.js正则对象11.字符串对象12.自定义对象13.BOM浏览器对象模型…

前端开发笔记--css 黑马程序员1

文章目录 1. css 语法规范2.css的书写风格3.基础选择器选择器的分类标签选择器类选择器类选择器的特殊使用--多类名 id 选择器 字体属性常见字体字体大小字体粗细字体倾斜字体的复合简写字体属性总结 文本属性文本颜色文本对齐装饰文本文本缩进文本间距文本属性总结 css的引入方…

新兴的安全职业挑战

我们经常与安全专业人士交谈&#xff0c;他们希望在努力提升职业发展的同时提高自己的价值并克服组织内部的挑战。在这些谈话中&#xff0c;花费大量时间讨论公司未来将面临的安全问题并不罕见。 安全领导者希望为问题制定计划并获得领导层对其计划的支持。这通常意味着实施修…

关于 文件操作详解 笔记 (含代码解析)

文件 磁盘&#xff08;硬盘&#xff09;上的⽂件是⽂件。 程序设计中&#xff0c;我们⼀般谈的⽂件有两种&#xff1a;程序⽂件、数据⽂件&#xff08;从⽂件功能的⻆度来分类 &#xff09; 程序⽂件 程序⽂件包括源程序⽂件&#xff08;后缀为.c&#xff09;,⽬标⽂件&#…

Mac解决服务端第三方库安装问题

问题&#xff1a; 这周使用Flask框架写了一个数据展示的小网页&#xff0c;在发布的时候发现构建失败&#xff0c;查看日志发现是这次新增的一个第三方库没有安装到服务端&#xff0c;导致构建的时候失败了 解决问题&#xff1a; 服务端发布新增第三方库 解决过程 1、确定服务…

笔记整理—linux网络部分(1)基础网络常用名词与知识

最开始使用在同一电脑主机下进行的通信门后面发展到不同主机之间的通信。 应用编程本章就是使用API socket进行通信。 应用层&#xff1a;低级&#xff08;直接基于socket接口编程&#xff09; 高级&#xff08;基于网络通信应用框架进行编程&#xff09; 更高级&#xff08;ht…

利用 Llama 3.1模型 + Dify开源LLM应用开发平台,在你的Windows环境中搭建一套AI工作流

文章目录 1. 什么是Ollama&#xff1f;2. 什么是Dify&#xff1f;3. 下载Ollama4. 安装Ollama5. Ollama Model library模型库6. 本地部署Llama 3.1模型7. 安装Docker Desktop8. 使用Docker-Compose部署Dify9. 注册Dify账号10. 集成本地部署的 Llama 3.1模型11. 集成智谱AI大模型…