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,长为1222resize后图片尺寸为:(2444, 1724, 3)
此方法采用读取图片的长宽,然后对长宽各增加一倍,显示的图片很大,所有我再次输出的图片截图不全!!!