Opencv-Python学习笔记(一):图像读取、显示、保存

我的博客主要以官网Opencv-Python教程和贾志刚老师的课程进行的学习整理。

      我用的是环境是python3.7+opencv4.1.1+pycharm2019.2.3。

  • 今天先学习如何读取图像,如何显示图像以及如何将其保存回

  • 今天将学习以下几个函数:cv2.imread()cv2.imshow()cv2.imwrite()
  • 如何使用Matplotlib显示图像

使用函数cv2.imread()读取图像。

      第二个参数是一个标志,用于指定应读取图像的方式。

  • cv2.IMREAD_COLOR:加载彩色图像。图像的任何透明度都将被忽略。这是默认标志。
  • cv2.IMREAD_GRAYSCALE:以灰度模式加载图像
  • cv2.IMREAD_UNCHANGED:加载图像,包括alpha通道。

我一般是默认不填第二个参数。

import cv2 as cv


print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("F:/Pycharm/opencv_exercises-master/images/Crystal.jpg")

使用函数cv2.imshow()在窗口中显示图像。

窗口自动适合图像尺寸。第一个参数是窗口名称,它是一个字符串。第二个是我们要显示的图像。可以根据需要创建任意多个窗口,但是必须使用不同的窗口名称。

src = cv.imread("F:/Pycharm/opencv_exercises-master/images/Crystal.jpg")
# cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
cv.waitKey(0)
cv.destroyAllWindows()

v2.waitKey()是键盘绑定功能。它的参数是时间(以毫秒为单位)。该函数将为任何键盘事件等待指定的毫秒数。如果在此期间按任意键,这个函数会返回按键的 ASCII 码值,程序将继续。如果没有键盘输入,返回值为 -1,如果我们设置这个函数的参数为 0,那它将会无限期的等待键盘输入。它也可以被用来检测特定键是否被按下。

cv2.destroyAllWindows()可以轻易删除任何我们建立的窗口。如果要销毁任何特定的窗口,可以使用函数cv2.destroyWindow()在括号内输入你想删除的窗口名

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

# -*- coding:utf-8 -*-
# Author : MMagicLoren
# @Email : 993983320@qq.com
# @Time : 2019/10/4 22:37
# @File : demo.py
# @Project : Workspace
import cv2 as cv


print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("F:/Pycharm/opencv_exercises-master/images/Crystal.jpg")
# cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
cv.waitKey(0)

cv.destroyAllWindows()

使用函数cv2.imwrite()保存图像。

第一个参数是文件名,第二个参数是我们要保存的图像。

我们做这样一个演示,先将图片转为灰度图片,并显示,再进行保存。

在我们文件夹下已经保存下来。

完整代码如下:

# -*- coding:utf-8 -*-
# Author : MMagicLoren
# @Email : 993983320@qq.com
# @Time : 2019/10/4 22:37
# @File : demo.py
# @Project : Workspace
import cv2 as cv


print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("F:/Pycharm/opencv_exercises-master/images/Crystal.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
img = cv.cvtColor(src, cv.COLOR_RGB2GRAY)  # 将图片转换为灰度图片
cv.imshow("output image", img)
cv.imwrite("output_image.jpg", img)

cv.waitKey(0)

cv.destroyAllWindows()

下面我们采用Matplotlib显示图像。

OpenCV中的图像是以BGR的通道顺序存储的但Matplotlib是以RGB模式显示的,所以直接在Matplotlib中显示OpenCV图像会出现问题,因此需要转换一下:

# -*- coding:utf-8 -*-
# Author : MMagicLoren
# @Email : 993983320@qq.com
# @Time : 2019/10/4 22:37
# @File : demo.py
# @Project : Workspace
import cv2 as cv
from matplotlib import pyplot as plt


print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("F:/Pycharm/opencv_exercises-master/images/Crystal.jpg")
# cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
# cv.imshow("input image", src)
# img = cv.cvtColor(src, cv.COLOR_RGB2GRAY)
# cv.imshow("output image", img)
# cv.imwrite("output_image.jpg", img)
#
# cv.waitKey(0)

# cv.destroyAllWindows()
img = cv.cvtColor(src, cv.COLOR_BGR2RGB)
plt.imshow(img)
plt.xticks([]), plt.yticks([])  # 隐藏x和y轴
plt.show()

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MMagicLoren

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

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

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

打赏作者

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

抵扣说明:

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

余额充值