OpenCV竟然可以这样学!成神之路终将不远(一)

44 篇文章 11 订阅
37 篇文章 8 订阅

返回目录

目录

1 图像入门--图像

1.1 读取图像

1.2 显示图像

1.3 写入图像

1.4 使用Matplotlib


1 图像入门--图像

要使用opencv之前,我们需要导入opencv,使用import cv2 as cv,接下来,开始重头戏。

1.1 读取图像

读取图像我们使用的是cv.imread(failname, flags),其中:

第一个参数是我们读取的图片名,第二个参数是一个标志,制定了读取图像的方式,一般有以下三种模式。

  • cv.IMREAD_COLOR(1): 加载彩色图像。任何图像的透明度都会被忽视。它是默认标志。
  • cv.IMREAD_GRAYSCALE(0):以灰度模式加载图像
  • cv.IMREAD_UNCHANGED(-1):加载图像,包括alpha通道

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

 

1.2 显示图像

显示图像我们要使用的是cv.imshow(winname, mat),在窗口中显示图像。窗口自动适合图像尺寸。

第一个参数是窗口名称,它是一个字符串。第二个参数是我们的对象。你可以根据需要创建任意
多个窗口,但可以使用不同的窗口名称。

代码如下,我定义了很多不同的窗口名称,但是用的都是同一个对象。

import cv2 as cv

img = cv.imread('11.jpg', 1)
cv.imshow('clone1', img)
cv.imshow('clone2', img)
cv.imshow('clone3', img)
cv.waitKey(0)
cv.destroyAllWindows()

运行效果如下,可以看到我们的小姐姐学会了多重影分身。

代码中:

(1)cv.waitKey()是一个键盘绑定函数。其参数是以毫秒为单位的时间。该函数等待任何键盘事件指定的毫秒。如果您在这段时间内按下任何键,程序将继续运行。如果0被传递,它将无限期地等待一次敲击键。。它也可以设置为检测特定的按键,例如,如果按下键q等。

注意:除了键盘绑定事件外,此功能还处理许多其他GUI事件,因此你必须使用它来实际显示图像。

(2)cv.destroyAllWindows()只会破坏我们创建的所有窗口。如果要销毁任何特定的窗口,请使用函数 cv.destroyWindow()在其中传递确切的窗口名称作为参数。

注意:在特殊情况下,你可以创建一个空窗口,然后再将图像加载到该窗口。在这种情况下,你可以指定窗口是否可调整大小。这是通过功能cv.namedWindow()完成的。默认情况下,该标志为cv.WINDOW_AUTOSIZE。但是,如果将标志指定为cv.WINDOW_NORMAL,则可以调整窗口大小。当图像尺寸过大以及向窗口添加跟踪栏时,这将很有帮助。

代码如下所示:

cv.namedWindow('image', cv.WINDOW_NORMAL)
img = cv.imread('11.jpg', 1)
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()

运行结果如下,可以看到小姐姐被我拉长了:

 

1.3 写入图像

写入图像使用的是cv.imwrite(filename, img, params)函数将图像进行保存。

第一个参数是文件名,第二个参数是要保存的图像。第三个参数为特定格式保存的参数编码。

在下面的程序中,以灰度加载图像,显示图像,按s保存图像并退出,或者按ESC 键直接退出而
不保存,具体代码如下:

img = cv.imread('11.jpg', 0)
cv.imshow('img', img)
k = cv.waitKey(0) & 0xFF
if k == 27:  # 等待ESC退出
    cv.destroyAllWindows()
elif k == ord('s'):  # 等待关键字s,保存并退出
    cv.imwrite('save.png', img)
    cv.destroyAllWindows()

其实,当我们按任意键都是直接退出的,但是不会销毁所有窗口,只有按下ESC才会销毁所有窗口,可以看到,如果按下s键,就会将图片保存下来,可以在文件夹中看到。

注意:如果使用的是64位计算机,则必须k = cv.waitKey(0) 按如下所示修改行: k = cv.waitKey(0) & 0xFF

 

1.4 使用Matplotlib

Matplotlib是Python的绘图库,可为你提供多种绘图方法。在这里,你将学习如何使用Matplotlib显示图像。你可以使用Matplotlib缩放图像,保存图像等。

代码如下:

from matplotlib import pyplot as plt

img = cv.imread('11.jpg', 0)
plt.imshow(img, cmap='gray', interpolation='bicubic')
plt.xticks([]), plt.yticks([])  # 隐藏x轴和y轴上的刻度值
plt.show()

运行结果如下:


欢迎评论区留言,一起探讨OpenCV成神之路的奥秘。

顺便给我加个关注,点个赞,加个收藏,让我们一起登上神坛。

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

星辰同学wwq

你的鼓励是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值