OpenCV-Python 教程——从Images开始

2024-08-31 06:18
文章标签 python opencv 教程 images

本文主要是介绍OpenCV-Python 教程——从Images开始,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目标

  • 这里,你将会学到如何读取、显示、保存一张图片

  • 你将会学习这些函数:cv2.imread(), cv2.imshow(), cv2.imwrite()

  • 当然,你将会学习如何用Matplotlib显示这些图片

使用OpenCV

读取图片

利用函数cv2.imread()来读取一张图片。该图片应该在工作目录中或是提供图片的绝对路径。

第二个参数用来明确读取图片的方式。

  • cv2.IMREAD_COLOR: 载入一张彩图,图片的透明度信息将被忽略。这是默认的方式!

  • cv2.IMREAD_GRAYSCALE: 以灰度模式载入图片

  • cv2.IMREAD_UNCHANGED: 载入图片,包括alpha通道(透明度信息)

注意 你可以用1,0,-1分别来代替以上三种模式。

样例代码:

import numpy as np
import cv2
# Load an color image in grayscale
img = cv2.imread('messi5.jpg',0)

警告 即使图片路径给错了,程序不会抛出错误,但输入print img将会得到None.

显示图片

利用函数cv2.imshow()在窗口中显示图片。窗口将会自动匹配图片尺寸。

第一个参数(string type)作为窗口的名字,第二个参数是我们的图片。你可以随心生成许多窗口,但需不同的名字。

cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

窗口截图如下图所示:
这里写图片描述

cv2.waitKey()是一个键盘绑定函数。它的参数是以毫秒为单位的时间。这个函数会等待任意键盘事件指定秒数,如果你在这段时间内摁任意键,程序将继续。如果指定为0,它将一直等待直到有摁键。当然你也可以设置检测特定键的输入,如摁下a键等,我们将在以后讨论。

注意 除了绑定键盘事件,这个函数也处理许多GUI事件,因此你实际显示图片时必须用它。

cv2.destroyAllWindows()简单地关闭我们创建的所有窗口。如果你想关闭指定的窗口,利用函数cv2.destroyWindow()并传入确切的窗口名字作参数。

注意 有一种特殊的情况,你可以先创建一个窗口,然后再载入图片。在这种情况下,你可以决定是否重新调整窗口。这可以通过cv2.namedWindow()来完成。默认情况下,参数是cv2.WINDOW_AUTOSIZE。如果你指定参数cv2.WINDOW_NORMAL的话,你可以重新调整窗口。当图片尺寸太大及添加轨迹栏到窗口中会很有用。

样例如下:

cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

写入图片

利用函数cv2.imwrite()来保存一张图片。

第一个参数是文件名,第二个参数是你想保存的图片。

cv2.imwrite('messigray.png',img)

这个命令会在当前工作目录应PNG格式保存图片。

综合

下面的程序将会因grayscale模式载入图片,并显示。如果你摁下’s’键,将保存并退出;或是可以摁下ESC键不保存退出。

import numpy as np
import cv2
img = cv2.imread('messi5.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27:         # wait for ESC key to exitcv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exitcv2.imwrite('messigray.png',img)cv2.destroyAllWindows()

警告 如果你用的是64位机器,你必须把k = cv2.waitKey(0)改成k = cv2.waitKey(0) & 0xFF

使用Matplotlib

Matplotlib是Python的画图库,提供了大量的画图方法。在接下来的教程中你将会见识它。这里我们学习如何用Matplotlib显示图片。用Matplotlib你可以缩放图片并保存它。

import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('messi5.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis
plt.show()

这里写图片描述

Matplotlib有海量的画图选项,更多的细节请参考Matplotlib官方文档。

警告 用OpenCV载入的彩图是BGR模式。但是Matplotlib显示是以RGB模式,因此用Opencv读取的彩图将不能在Matplotlib中正确显示。细节请参考讨论

英文原始教程

这篇关于OpenCV-Python 教程——从Images开始的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123125

相关文章

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

Python轻松实现Word到Markdown的转换

《Python轻松实现Word到Markdown的转换》在文档管理、内容发布等场景中,将Word转换为Markdown格式是常见需求,本文将介绍如何使用FreeSpire.DocforPython实现... 目录一、工具简介二、核心转换实现1. 基础单文件转换2. 批量转换Word文件三、工具特性分析优点局

Python中4大日志记录库比较的终极PK

《Python中4大日志记录库比较的终极PK》日志记录框架是一种工具,可帮助您标准化应用程序中的日志记录过程,:本文主要介绍Python中4大日志记录库比较的相关资料,文中通过代码介绍的非常详细,... 目录一、logging库1、优点2、缺点二、LogAid库三、Loguru库四、Structlogphp

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

Python海象运算符:=的具体实现

《Python海象运算符:=的具体实现》海象运算符又称​​赋值表达式,Python3.8后可用,其核心设计是在表达式内部完成变量赋值并返回该值,从而简化代码逻辑,下面就来详细的介绍一下如何使用,感兴趣... 目录简介​​条件判断优化循环控制简化​推导式高效计算​正则匹配与数据提取​性能对比简介海象运算符

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

python项目打包成docker容器镜像的两种方法实现

《python项目打包成docker容器镜像的两种方法实现》本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录简单版:(一次成功,后续下载对应的软件依赖)第一步:肯定是构建dockerfile,如下:第二步