opencv图像的读取就是利用像素格的原理,通过cv2.imread()函数,遍历出每个像素格和像素格中的值,这里的三通道的图片,对应三维数组
- 图片读取cv2.imread()函数
遍历出每个像素格和像素格中的值,然后保存到对应维度的数组中进行显示
img=cv2.imread(filepath,flags)
filepath : 图像路径,可以使用绝对或者是相对路径
flags : 读取的图片类型 (省略时,默认读入完整图片)
- cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道|
- cv2.IMREAD_GRAYSCALE:读入灰度图片|
- cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道
- 读入彩色图片
- 读入灰度图片
- 读入完整图片
- 图片显示cv2.imshow()函数
cv2.imshow(Name,img)
Name:图像显示框的名字,例如"photo",注意不要是中文
img:图像读取的像素组,显示图像的前提是先进行图像读取
- 图像保存函数cv2.imwrite()
cv2.imwrite(filepath,img,num)
filepath:保存文件路径
img:读取图像数组,要保存,先读取
num:可选参数
-
打印图像属性
基本属性:像素、分辨率、大小、颜色、位深、色调、饱和度、亮度、色彩通道、图像的层次
-
图像通道
彩色图像的色彩为三基色B\G\R通过不同的比例混合而成,在图像像素中用[0-255表示]表示B\G\R颜色的深浅
-
图像的加法操作
可以使用Opencv加法和Numpy加法,来把两幅图像相加。两个图像应该具有相同的大小和类型,或者第二个图像可以是标量值。但这两者存在区别,Opencv是饱和操作,而Numpy是模运算。
通常opencv的效果要好一些
-
不同的是两幅图像的权重不同,这就会给人一种混合或者透明的感觉
图像混合的计算公式如下:g(x) = (1−α)f0(x) + αf1(x)。通过修改 α 的值(0 → 1),可以实现非常炫酷的混合。
函数 cv2.addWeighted() 可以按下面的公式对图片进行混合操作。
dst = α⋅img1 + β⋅img2 + γ。这里γ取为零。
对于两幅图像的加法和混合操作,都需要两幅图像时相同大小。
- 图像的处理
- 图像的缩放
cv2.resize(src,dsize,fx=0,fy=0,interpolation=cv2.INTER_LINEAR)
src : 输入图像
dsize: 绝对尺寸,直接指定调整后图像的大小(需要整型)
fx,fy: 相对尺寸,将dsize设置为None,然后将fx和fy设置为比例因子即可
interpolation:插值方法
- 图像的平移
cv.warpAffine(img,M,dsize)
img: 输入图像
M: 2∗3移动矩阵
dsize: 输出图像的大小(宽度,高度)
注意:将M设置为np.float32类型的Numpy数组。