Opencv之图像入门

Opencv基础操作之图像入门

1.利用Opencv进行图像的读取和保存

1.1图像读取

Opencv读取和显示需要使用到imread()和imshow()两个函数,使用下面这段代码即可利用Opencv实现指定图片的读取与显示:

import cv2 as cv

img = cv.imread('cat.jpg',-1)
cv.namedWindow('Img',cv.WINDOW_AUTOSIZE)
cv.imshow('Img',img)
cv.waitKey(0)
cv.destroyWindow('Img')

函数介绍
cv.imread():读取要展示的照片,imread()有两个参数,第一个参数是要读取照片路径(包括文件名和后缀),第二个参数是图像的读取方式,可以是:
cv.IMREAD_COLOR(彩色rgb,忽视透明度,默认值)
cv.IMREAD_GRAYSCALE(灰度模式)
cv.IMREAD_UNCHANGED(rgba,a表示透明度)
这三个参数分别可用1、0、-1代替。
cv.namedWindow():创建要展示图片的窗口,第一个参数是窗口名称,第二个参数控制窗口大小是否可以调整,取值为:
cv.WINDOW_AUTOSIZE(默认值,适应图片大小,窗口大小不可调整)
cv.WINDOW_NORMAL:(可以调整窗口大小,对大图会进行一个缩放便于展示)。
cv.imshow():展示读取的图片,同样有两个参数,第一个参数类型为字符串类型,是我们给展示图象窗口取的名称,第二个参数是我们要展示的图片对象
cv.waitKey():键盘绑定函数,参数是以毫秒为单位的时间,如果传入0,那么会无限等待敲击一次键盘才会退出。
cv.destroyWindow():销毁指定窗口,参数为要销毁的窗口。
cv.destroyAllWindows():销毁所有窗口。

展示图片效果:

Opencv之图像入门

1.2 图像保存

Opencv保存图像十分简单,使用imwrite()函数即可,这里我简单的加载一张彩色图像并将其保存为灰度图像:


img = cv.imread('cat.jpg',1)

img_temp = cv.cvtColor(img,cv.COLOR_BGR2GRAY)

cv.imwrite('cat_gray.jpg',img_temp)

函数介绍
imwrite():保存图像,涉及两个参数,第一个参数表示要将图像保存到的路径(包括文件名和后缀),第二个参数即是我们要保存的图像对象。

代码执行之后我们就可以在我们指定的路径(我这里设置为与程序同一路径)下看到我们所保存的灰度图像了,如下图所示:

Opencv之图像入门

2.使用Matplotlib显示图像

除了使用Opencv的imshow()显示图像外,我们还可以使用python的绘图库Matplotlib显示图像,使用方式同样简单,但是要注意plt.imshoe()要和plt.show()搭配使用才能达到显示图像的目的。代码如下:

import cv2 as cv
from matplotlib import pyplot as plt

img = cv.imread('cat.jpg',1)
plt.imshow(img)
plt.xticks([]), plt.yticks([])
plt.show()

展示图片效果:

Opencv之图像入门
从上边的图像展示效果可以看到,虽然我们使用Matplotlib对cv.imread()读取的图像进行了显示,但是很明显这其中出现了一些问题,导致图片色彩显示错误。
导致这个错误的原因是cv.imread()读取图片的时候是按照BGR的顺序进行读取的,而Matplotlib进行显示的时候却是按照RGB的顺序进行显示的,这就导致了图像色彩显示错误的原因,我们可以只使用Opencv来对图像进行读取和显示操作来避免这种情况发生,也可以采用下面的办法来解决这个问题。
方法一:
import cv2 as cv
from matplotlib import pyplot as plt

img = cv.imread('cat.jpg',1)
img2=img[:,:,::-1]
plt.imshow(img2)
plt.xticks([]), plt.yticks([])
plt.show()

方法二:

import cv2
from matplotlib import pyplot as plt

img = cv.imread('cat.jpg',1)
cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img2)
plt.xticks([]), plt.yticks([])
plt.show()

上述两种方式分别采用了数组索引与切片的方法、Opencv色彩空间转换函数cv.cvtColor()将BGR的存储顺序转化为RGB顺序,以使Matplotlib可以正确显示图片。

正确显示图像效果如下:

Opencv之图像入门

3.总结

这篇文章是我学习Opencv中文官方文档的开篇,也同样是我在CSDN记录自己学习过程的开始,文中涉及到的讲解掺杂了我自己的理解,肯定有不详尽甚至错误之处,如果确实存在的话请一定在评论区指出,感激不尽!

Original: https://blog.csdn.net/qq_40474495/article/details/122277403
Author: 裂开吧敌人
Title: Opencv之图像入门

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/645453/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球