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

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

上一小节中我们成功安装了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.lryc.cn/news/459247.html

相关文章:

  • 【花卉识别系统】Python+卷积神经网络算法+人工智能+深度学习+图像识别+算法模型
  • k8s、prometheus、grafana数据采集和展示的链路流程
  • sentinel dashboard改造落地设计实现解释(一)-分布式fetcher和metrics存储/搜索
  • LabVIEW提高开发效率技巧----时序分析
  • python不用ide也能进行调试
  • Django学习笔记之Django基础学习
  • smartctl 设置硬盘的 write-caching
  • 【Spring AI】Java实现类似langchain的向量数据库RAG_原理与具体实践
  • linux下使用systemctl设置开机自动运行程序
  • 复位电路的亚稳态
  • 针对考研的C语言学习(循环队列-链表版本以及2019循环队列大题)
  • 系统架构设计师教程 第12章 12.4 信息系统架构案例分析 笔记
  • web1.0,web2.0,web3.0 有什么区别 详解
  • 将图片添加到 PDF 的 5 种方法
  • TiDB 优化器丨执行计划和 SQL 算子解读最佳实践
  • 初学51单片机之I2C总线与E2PROM以及UART简单实例应用
  • 软考高级软件架构师论文——论Web系统的测试技术及其应用
  • 快速总结AFPN
  • Linux 内核中USB鼠标枚举失败问题总结
  • 十六进制转二进制
  • Python保存CSV文件,Excel打开后中文乱码
  • 数据湖数据仓库数据集市数据清理以及DataOps
  • 「Ubuntu」文件权限说明(drwxr-xr-x)
  • JS-学生管理系统(功能实现)
  • C# 屏幕录制工具
  • 前端开发攻略---前端ocr图片文字提取功能
  • 平凯星辰亮相 2024开放原子开源生态大会,分享开源教育及社区治理经验
  • OCR经典神经网络(二)文本检测算法DBNet算法原理及其在icdar15数据集上的应用
  • 论文笔记:Prompt-Based Meta-Learning For Few-shot Text Classification
  • 光耦知识分享 | AC晶体管光耦在照明控制领域的应用与选型推荐