图像的读取、复制、显示、保存
(1)认识和读取图像
图像其实是一个数组,对图像的处理就是对数字的处理
#导入opencv和numpy
import cv2
import numpy as np
读取图像
这里是我用的图片
1.jpg
img = cv2.imread("1.jpg", cv2.IMREAD_COLOR)
“1.jpg”是要读入图像的完整路径 ,这里我把图像文件和.py文件放在同一个路径下,所以只写了文件名**(注意:图像的完整路径不要有中文,如果出现中文的话会报错,请一定要注意这一点)**
#opencv支持以下3种
cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
cv2.IMREAD_GRAYSCALE:读入灰度图片
cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道
这里就算不用参数也可以一样读取
img = cv2.imread("1.jpg")
对图像进行处理和显示
print(img)
print(np.shape(img))
输出结果为
[[[205 204 154]
[205 204 154]
[205 204 154]
…
[205 204 154]
[205 204 154]
[205 204 154]]
[[205 204 154]
[205 204 154]
[205 204 154]
…
[205 204 154]
[205 204 154]
[205 204 154]]
[[205 204 154]
[205 204 154]
[205 204 154]
…
[205 204 154]
[205 204 154]
[205 204 154]]
…
[[190 174 78]
[190 174 78]
[190 174 78]
…
[190 174 78]
[190 174 78]
[190 174 78]]
[[190 174 78]
[190 174 78]
[190 174 78]
…
[190 174 78]
[190 174 78]
[190 174 78]]
[[190 174 78]
[190 174 78]
[190 174 78]
…
[190 174 78]
[190 174 78]
[190 174 78]]]
(375, 500, 3)
(二)显示图像
#读取图片
img = cv2.imread('1.jpg')
#先创建一个窗口
cv2.namedWindow('image')
#在窗口中显示图像
cv2.imshow('image', img)
#使窗口始终保持住
cv2.waitKey(0)
‘image’:是显示图像的窗口的名字
img:是要显示的图像(imread读入的图像),窗口大小自动调整为图片大小 。
cv2.waitKey就是等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。若没有按下任何键,超时后返回-1。参数为0表示无限等待。
有一句话很关键”若在等待时间内按下任意键则返回按键的ASCII码”
你可以用此功能做一个简单的按键检测。
在读取图片中,imread(‘图片地址’,‘模式参数’)函数可以来控制所读取图片的模式。
上文提到了三种参数,这里还可以有两种
模式参数:
0:读入的为灰度图像(即使读入的为彩色图像也将转化为灰度图像)
1:读入的为彩色图像(默认)
#读入为灰度图像
img = cv2.imread('rose1.jpg', 0)
最后释放窗口
cv2.destroyAllWindows()
(三)复制图像
img1 = img.copy()
(四)保存图像
cv2.imwrite('1.jpg', img1)
第一个参数是保存图像的地址以及文件的名字,第二个参数是所要保存的图像数组。
其实它还有第三个参数,针对特定的图像格式,对于JPEG,其表示的是图片的quality,用0-100的整数表示,默认为95。当然,你如果把参数设置的超过100也不会出错,但到100已经达到图片本身的最高质量了。cv2.IMWRITE_JPEG_QUALITY的类型为int类型,符合图像数组为整数的要求,不用再更改类型。
cv2.imwrite('1.jpg', img1, [cv2.IMWRITE_JPEG_QUALITY, 2])
对于PNG,第三个参数表示的是压缩级别。cv2.IMWRITE_PNG_COMPRESSION,从0到9,压缩级别越高,图像尺寸越小。默认级别为3.
cv2.imwrite("1_test.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 0])
cv2.imwrite("2_test.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 9])
还有其他的一些相关操作,可以在网上查阅到