Opencv学习(一)之imread()、imshow()、imwrite()
一、cv2.imread()读取图片
cv2.imread() 方法用于从所提供的路径读取图片信息,图片信息为矩阵形式
- 用法: cv2.imread(filename,flags)
- 参数:
filename :为图片路径,为一个字符串类型
flags:标志位,即告诉程序如何读取这张图片,取值可为:{cv2.IMREAD_COLOR,cv2.IMREAD_GRAYSCALE,cv2.IMREAD_UNCHANGED}
1、cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道,可用1作为实参替代
2、cv2.IMREAD_GRAYSCALE:读入灰度图片,可用0作为实参替代
3、cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道,可用-1作为实参替代
示例代码:
import cv2
# 路径
path = "cat.jpg"
# 三种读取图片的方式
read_photo_1 = cv2.imread(path,flags = cv2.IMREAD_COLOR)
read_photo_2 = cv2.imread(path,flags = cv2.IMREAD_GRAYSCALE)
read_photo_3 = cv2.imread(path,flags = cv2.IMREAD_UNCHANGED)
# 输出图片的大小
print(read_photo_1.shape)
print(read_photo_2.shape)
print(read_photo_3.shape)
输出:
(862, 1222, 3)
(862, 1222)
(862, 1222, 3)
注: 这里我们可能看不出来这些图片的区别,在下一节的imshow中我们可以用可视化来展示这些区别。
二、cv2.imshow()展示图片
cv2.imshow() 方法的作用就是将读取到的图片进行窗口显示
- 用法: cv2.imshow(wname,img)
- 参数:
wname:窗口名字,为一个字符型
img:由cv2.imread()函数读取到的变量名
示例代码:
import cv2
# 图片路径
path = "cat.jpg"
#三种读取图片方法
read_photo_1 = cv2.imread(path,flags = cv2.IMREAD_COLOR)
read_photo_2 = cv2.imread(path,flags = cv2.IMREAD_GRAYSCALE)
read_photo_3 = cv2.imread(path,flags = cv2.IMREAD_UNCHANGED)
# 展示三种图片方法
show_photo_1 = cv2.imshow('read_photo_1',read_photo_1)
show_photo_2 = cv2.imshow('read_photo_2',read_photo_2)
show_photo_3 = cv2.imshow('read_photo_3',read_photo_3)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出图片中展示:
show_photo_1
show_photo_2
show_photo_3
这样就可以看到这三种读取图片方式的区别啦
三、cv2.resize()修改尺寸
cv2.resize() 函数用于给图片修改尺寸
- 用法:cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)
- 参数:
scr:原图
dsize:输出图像尺寸
fx:沿水平轴的比例因子
fy:沿垂直轴的比例因子
interpolation:插值方法
示例代码:
1、采取比例因子方法resize图片
import cv2
# 图片路径
path = "cat.jpg"
# 读取图片
read_photo_1 = cv2.imread(path,flags = cv2.IMREAD_COLOR)
# 采取比例因子方法resize图片
resize_photo_1 = cv2.resize(read_photo_1,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
# 输出resize后图片的尺寸
print(resize_photo_1.shape)
# 展示resize图片
show_photo_1 = cv2.imshow('resize_photo_1',resize_photo_1)
cv2.waitKey(0)
输出结果:
(1724, 2444, 3)
最后resize的图片尺寸大刀我屏幕都放不下,麻了呀。
2、采用设置固定尺寸方法来resize图片
import cv2
# 图片路口
path = "cat.jpg"
# 读取图片
read_photo_1 = cv2.imread(path,flags = cv2.IMREAD_COLOR)
print("原图片尺寸为:")
print(read_photo_1.shape)
# 获取图片的长、宽
height,width = read_photo_1.shape[:2]
print("原图片宽为:{},长为{}".format(height,width))
# resize图片
resize_photo_1 = cv2.resize(read_photo_1,(height*2,width*2),interpolation=cv2.INTER_CUBIC)
print("resize后图片尺寸为:")
print(resize_photo_1.shape)
show_photo_1 = cv2.imshow('resize_photo_1',resize_photo_1)
cv2.waitKey(0)
输出结果:
原图片尺寸为:
(862, 1222, 3)
原图片宽为:862,长为1222
resize后图片尺寸为:
(2444, 1724, 3)
此方法采用读取图片的长宽,然后对长宽各增加一倍,显示的图片很大,所有我再次输出的图片截图不全!!!