一、读入图像
使用函数cv2.imread(filepath,flags)
读入一副图片
import cv2
img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
- 1
- 2
filepath:要读入图片的完整路径
flags:读入图片的标志
cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
cv2.IMREAD_GRAYSCALE:读入灰度图片
cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道
- 1
- 2
- 3
- 4
- 5
二、显示图像
使用函数cv2.imshow(wname,img)
显示图像,第一个参数是显示图像的窗口的名字,第二个参数是要显示的图像(imread读入的图像),窗口大小自动调整为图片大小
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#dv2.destroyWindow(wname)
- 1
- 2
- 3
- 4
cv2.waitKey顾名思义等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。
cv2.destroyAllWindow()销毁所有窗口
cv2.destroyWindow(wname)销毁指定窗口
- 1
- 2
- 3
三、保存图像
使用函数cv2.imwrite(file,img,num)
保存一个图像。
第一个参数是要保存的文件名,第二个参数是要保存的图像。
可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别。默认为3
注意:
cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小
- 1
- 2
cv2.imwrite('1.png',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])
cv2.imwrite('1.png',img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
- 1
- 2
四、图片操作
1. 图像的缩放 resize()函数的应用
cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)
scr:原图
dsize:输出图像尺寸
fx:沿水平轴的比例因子
fy:沿垂直轴的比例因子
dst - 目标图像。当参数dsize不为0时,dst的大小为size;否则,它的大小需要根据src的大小,参数fx和fy决定。dst的类型(type)和src图像相同
interpolation:插值方法
- 1
- 2
- 3
- 4
- 5
- 6
- 7
interpolation - 插值方法。共有5种:
1. INTER_NEAREST - 最近邻插值法
2. INTER_LINEAR - 双线性插值法(默认)
3. INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。
4. INTER_CUBIC - 基于4x4像素邻域的3次插值法
5. INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值
- 1
- 2
- 3
- 4
- 5
- 6
示例:
"""
重设图像大小。
缩小图像,比例为(0.3, 0.5)
放大图像,比例为(1.6, 1.2)
"""
import cv2
import os
if __name__ == '__main__':
img = cv2.imread("lena.jpg", -1)
if img == None:
print "Error: could not load image"
os._exit(0)
height, width = img.shape[:2]
# 缩小图像
size = (int(width*0.3), int(height*0.5))
shrink = cv2.resize(img, size, interpolation=cv2.INTER_AREA)
# 放大图像
fx = 1.6
fy = 1.2
enlarge = cv2.resize(img, (0, 0), fx=fx, fy=fy, interpolation=cv2.INTER_CUBIC)
# 显示
cv2.imshow("src", img)
cv2.imshow("shrink", shrink)
cv2.imshow("enlarge", enlarge)
cv2.waitKey(0)
参考:
- https://www.cnblogs.com/jyxbk/p/7651241.html
- https://www.cnblogs.com/shizhengwen/p/8719062.html
- 转载来源:https://blog.csdn.net/nanhuaibeian/article/details/100938358
</div>