opencv教程1读取保存图片

这篇教程介绍了如何利用OpenCV的cv2.imread(), cv2.imshow()和cv2.imwrite()函数读取、显示和保存图像。同时,也展示了如何通过cv2.waitKey()检测键盘输入及关闭窗口。此外,还提及了使用Matplotlib库展示图像的方法,包括调整窗口大小和保存图像。最后,提供了一个示例代码,演示了从键盘输入触发保存图像的操作。
摘要由CSDN通过智能技术生成

• 在这里你将学会怎样读入一幅图像,怎样显示一幅图像,以及如何保存一
幅图像
• 你将要学习如下函数:cv2.imread(),cv2.imshow(),cv2.imwrite()
• 如果你愿意的话,我会叫你如何使用 用 Matplotlib 显示一幅图片

使用函数 cv2.imread() 读入图像。这幅图像应该在此程序的工作路径,
或者给函数提供完整路径,
第二个参数是要告诉函数应该如何读取这幅图片。
• cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略,
这是默认参数。
• cv2.IMREAD_GRAYSCALE:以灰度模式读入图像
cv2.IMREAD_UNCHANGED:读入一幅图像,并且包括图像的 alpha 通道

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

在这里插入图片描述
4.2 显示图像
使用函数 cv2.imshow() 显示图像。窗口会自动调整为图像大小。第一
个参数是窗口的名字,其次才是我们的图像。你可以创建多个窗口,只要你喜欢,但是必须给他们不同的名字

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

在这里插入图片描述
cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫
秒级。函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒之内,如果按下任意键,这个函数会返回按键的 ASCII 码值,程序将会继续运行。如果没有键盘输入,返回值为 -1,如果我们设置这个函数的参数为 0,那它将会无限期的等待键盘输入。它也可以被用来检测特定键是否被按下,例如按键 a 是否被按下,这个后面我们会接着讨论。
cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。如果
你想删除特定的窗口可以使用 cv2.destroyWindow(),在括号内输入你想
删除的窗口名

建 议:一 种 特 殊 的 情 况 是, 你 也 可 以 先 创 建 一 个 窗 口, 之 后
再 加 载 图 像。 这 种 情 况 下, 你 可 以 决 定 窗 口 是 否 可 以 调 整
大 小。 使 用 到 的 函 数 是 cv2.namedWindow()。 初 始 设 定 函 数
标 签 是 cv2.WINDOW_AUTOSIZE。 但 是 如 果 你 把 标 签 改 成
cv2.WINDOW_NORMAL,你就可以调整窗口大小了。当图像维度太大,
或者要添加轨迹条时,调整窗口大小将会很有用

3 保存图像
使用函数 cv2.imwrite() 来保存一个图像。首先需要一个文件名,之后才
是你要保存的图像。

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

下面的程序将会加载一个灰度图,显示图片,按下’s’键保存后退出,或者
按下 ESC 键退出不保存


```cpp
# -*- coding: utf-8 -*-
 """
 Created on Wed Jan 1 20:49:33 2014
 @author: duan
 """
 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 exit
cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
1cv2.imwrite('messigray.png',img)
cv2.destroyAllWindows()
使用 Matplotlib
Matplotib 是 python 的一个绘图库,里头有各种各样的绘图方法。之后
会陆续了解到。现在,你可以学习怎样用 Matplotib 显示图像。你可以放大图
像,保存它等等。

```cpp
 # -*- coding: utf-8 -*-
"""
Created on Wed Jan 1 20:49:33 2014
 @author: duan
"""
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()

在这里插入图片描述
参见:Matplotib 有多种绘图选择。具体可以参见 Matplotib docs。我们也
会陆续了解一些注意:**彩色图像使用 OpenCV 加载时是 BGR 模式。但是 Matplotib 是 RGB模式。**所以彩色图像如果已经被 OpenCV 读取,那它将不会被 Matplotib 正确显示。具体细节请看练习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

位沁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值