opencv-python 4.图片

本文详细介绍了如何使用OpenCV进行图像处理,包括读取、显示和保存图像的基本操作。通过实例演示了不同读取模式的效果,如彩色、灰度和包含alpha通道。同时,文章还讲解了使用cv2.imshow()和cv2.imwrite()函数的方法,以及如何利用Matplotlib库显示图像。

目标

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

4.1 读入图像

cv2.imread()读入图像。这幅图像应该在此程序的工作路径,或者给函数提供完整路径,第二个参数是要告诉函数应该如何读取这幅图片。

  • cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略,
    这是默认参数。
  • cv2.IMREAD_GRAYSCALE:以灰度模式读入图像
  • cv2.IMREAD_UNCHANGED:读入一幅图像,并且包括图像的alpha 通道

注意
除了这三个标志,你可以分别简单地传递整数1、0或-1。

import cv2 as cv

src = cv.imread("I:/images/Animation/17.jpg", 0)
src1 = cv.imread("I:/images/Animation/17.jpg", cv.IMREAD_COLOR)
src2 = cv.imread("I:/images/Animation/17.jpg", cv.IMREAD_GRAYSCALE)
src3 = cv.imread("I:/images/Animation/17.jpg", cv.IMREAD_UNCHANGED)
cv.imshow('image', src)
cv.imshow('image1', src1)
cv.imshow('image2', src2)
cv.imshow('image3', src3)
cv.waitKey(0)
cv.destroyAllWindows()

结果

在这里插入图片描述


警告:就算图像的路径是错的,OpenCV 也不会提醒你的,但是当你使用命令print img时得到的结果是None。

4.2 显示图像

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

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

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

代码:

import cv2 as cv

src = cv.imread("I:/images/Animation/16.jpg", 0)
cv.namedWindow('image', cv.WINDOW_NORMAL)
cv.imshow('image', src)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述

4.3 保存图像

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

import cv2 as cv

src = cv.imread("I:/images/Animation/16.jpg", 0)
cv.imwrite('messigray.png',src)
cv.destroyAllWindows()

结果
在这里插入图片描述
在这里插入图片描述

总结

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

import cv2 as cv

src = cv.imread("I:/images/Animation/16.jpg", 0)
cv.imshow('image', src)
k=cv.waitKey(0)
if k == 27:         # wait for ESC key to exit
    cv.destroyAllWindows()
elif k == ord('s'): #wait for 's' key to save and exit
    cv.imwrite('messigray.png',src)
    cv.destroyAllWindows()


使用Matplotlib

Matplotib 是python 的一个绘图库,里头有各种各样的绘图方法。之后会陆续了解到。现在,你可以学习怎样用Matplotib 显示图像。你可以放大图像,保存它等等。

import cv2 as cv
from matplotlib import pyplot as plt

src = cv.imread("I:/images/Animation/16.jpg", 0)
plt.imshow(src, cmap='gray', interpolation='bicubic')
plt.xticks([]), plt.yticks([])   #to hide tick values on X and Y axis
plt.show()

结果:
在这里插入图片描述
注意:彩色图像使用OpenCV 加载时是BGR 模式。但是Matplotib 是RGB模式。所以彩色图像如果已经被OpenCV 读取,那它将不会被Matplotib 正确显示。

做了点笔记
搬运自OpenCV-Python-Tutorial-中文版pdf 段力辉 译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值