opencv-python学习(1)--读写与缩放
摘要
opencv的python图像处理学习笔记
1.安装和导入
1 | pip install opencv-python |
1 | import cv2 |
2.读取与显示
读取图片 img = cv2.imread (filename,flags=None)
路径要全英文,图像路径错误不会报错会返回None
读取到了返回的是numpy.ndarray对象 1
2
3
4
5
6
7# -1表示保持原有的格式不变
# 0表示将图像调整为单通道的灰度图像
# 1表示将图像调整为3通道的BGR通道。为默认值
img=cv2.imread("test.jpg")
img=cv2.imread("test.jpg",0)
展示图片 cv.imshow(“窗口名字”,被读取的图片)
1 | # 显示一个可以调大小的窗口 |
1 | # 等待结束 |
汇总 1
2
3
4
5
6img=cv2.imread("hmbb.jpg")
print('Original Dimensions : ',img.shape) # 显示图片大小等参数
# cv2.namedWindow("image",cv2.WINDOW_FREERATIO)
cv2.imshow("image",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
3.缩放
cv2.resize()
快速使用 1
2img = cv.resize(img,(width,height))
# 默认双线性插值
1 | resize(InputArray src, OutputArray dst, Size dsize, |
图片缩放函数
来自计算机视觉图像处理-CV2与图像插值算法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27def inter(img):
'''
图像缩放
param: img
return: None
'''
scale_percent = 30 # percent of original size
width = int(img.shape[1] * scale_percent / 100)
height = int(img.shape[0] * scale_percent / 100)
dim = (width, height)
# 双线性插值缩小
resized = cv2.resize(img, dim, interpolation = cv2.INTER_LINEAR) # 缩小到0.3
# 缩放大小
fx = 1.5
fy = 1.5
# 方法1:最近邻插值放大
nearest_resized = cv2.resize(img, dsize=None, fx=fx, fy=fy, interpolation = cv2.INTER_NEAREST)
# 方法2:双线性插值放大
linear_resized = cv2.resize(img, dsize=None, fx=fx, fy=fy, interpolation = cv2.INTER_LINEAR)
# 展示结果
cv2.imshow("Resized image", resized)
cv2.imshow("INTER_NEAREST image", nearest_resized)
cv2.imshow("INTER_LINEAR image", linear_resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
4.保存
借用官方文档的代码
1 | import numpy as np |
手册说如果是64位,需使用k = cv.waitKey(0) & 0xFF
但实测不需要也是对的。
参考资料
[1] https://www.cnblogs.com/luozx207/p/8611459.html
[2] https://blog.csdn.net/qq_51491920/article/details/124408811
[3] cv2.resize()原理详解