OpenCV基础学习(一) 图像的读取、显示和保存
目标:
- 学习函数: cv.imread(), cv.imshow() , cv.imwrite()
- 除此之外,使用Matplotlib展示图像
读取图像
函数形式
使用cv.imread()
读取一张图片,要求图片和代码文件在同一文件目录,或者提供准确的图像路径。
retval = cv.imread( filename[, flags] )
参数解析
filename 图片名称
flags Flag that can take values of cv::ImreadModes
常用flags名称,可以用数字(-1、0、1)代替:
cv.IMREAD_COLOR : 读取彩色图像并忽略透明度 1
cv.IMREAD_GRAYSCALE : 以灰度图读取图像 0
cv.IMREAD_UNCHANGED : 读取图像包含alpha通道 -1
示例代码
import numpy as np
import cv2 as cv
# Load a color image in grayscale
# img = cv.imread('image.jpeg',0)
img = cv.imread('/home/lzy/Desktop/opencv-learn/get-started/image.jpeg',0)
分析代码
首先,导入numpy、cv2包,使用cv.imread()
,读取图像
Note cv.imread()
第一个参数是图像文件的准确路径,容易出现错误。(读取一张图片,要求图片和代码文件在同一文件目录,或者提供准确的图像路径)即示例代码两种形式均可以完成函数效果。
显示图像
函数形式
使用cv.imshow()
创建展示图像的窗口,并且窗口和图片大小一致。
None = cv.imshow(String winname,Array mat)
参数解析
winname Name of the window.
mat Image to be shown.
#已经被OpenCV读取到的图像 == 【img = cv.imread('/image.jpeg',0)】
示例代码
import numpy as np
import cv2 as cv
# Load a color image in grayscale
img = cv.imread('image.jpeg',0)
cv.imshow('image',img)
cv.waitKey(0) #等待按下任意键
cv.destroyAllWindows() #销毁所有窗口
分析代码
Note cv.imshow()
的第二个参数容易出现错误,参数是经过cv.imread()
读取成功之后的图像数组,而不是图像本身的名字。此外,cv.waitKey()
用于指定展示图片的时间,参数单位ms。即cv.waitKey(25)
是展示图像25 ms,cv.waitKey(0)
的作用为展示图像,直至用户按下键盘按键
保存图像
函数形式
第一个参数是保存文件的名称, 第二个是想要保存的、已经被转换的数组(img = cv.imread('image.jpeg',0)
)
retval = cv.imwrite( filename, img[, params] )
参数解析
filename Name of the file.
img Image to be saved.
params Format-specific parameters encoded as pairs(paramId_1, paramValue_1, paramId_2, paramValue_2, ... .)#可以默认,不填写
示例代码
import numpy as np
import cv2 as cv
# Load a color image in grayscale
img = cv.imread('image.jpeg',0)
#Display an image
cv.imshow('image',img)
cv.waitKey(0) #等待按下任意键
cv.destroyAllWindows() #销毁所有窗口
#Write an image
cv.imwrite('messigray.png',img)
分析代码
Note 正如上面参数中的解释,params参数的个数并不是固定的(可以点击params获取具体的参数解释)。除此之外,不再做进一步的解释。
Matplotlib展示图像
此部分,没有涉及,具体情形,参见官网说明文档
示例代码
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.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()