1.1数字图像概念
数字图像,又称数码图像或数位图像,是二维图像用有限数值像素表示,由数组或矩阵表示。数字图像可以理解为一个二维函数f(x,y)其中x和y是空间平面坐标,而在任意坐标处的幅值f称为图像在该点处的强度或灰度
opencv-python安装
pip install opencv-contrib-python
安装contrib版本opencv
1.2 图像尺寸
-
图像尺寸
图像尺寸的长度和宽度都是以像素为单位的 -
像素
-
像素是数码影像最基本的单位,每个像素就说一个小点,而不同颜色的点聚集起来就变成一副动人的照片
-
灰度像素点数值范围在0-255之间,0表示黑、255表示白,其他值表示处于黑白之间
-彩色图用红、绿、蓝三通道的二维矩阵来表示。每个数值也是在0到255之间,0表示相应的基色,而25表示相应的基色在该像素中取得最大值。
1.3 读入图像
import cv2
img=cv2.imread('ss.jpg',0)
第一个参数表示图片路径
第二个参数为读取方式,常见的方式有三种
cv2.imread_color 默认值,加载一张彩色图片,忽视透明度。参数为 1
cv2.imread_grayscale 加载一张灰度图。参数为 0
cv2.imread_unchanged 加载图像,包括他的alpha通道 参数为 -1
1.4 保存图像
cv2.imwrite('sda.png',img)
1.5 通道数
图像的位深度,是指描述图像中每个pixel数值所占的二进制位数,位深度越大则图像能表示的颜色数就越多,色彩越丰富逼真。
8位:单通道图像,也就是灰度图,灰度值范围,0-255
24位:三通道3*8=24
32位:三通道加透明度Alpha通道
1.6 灰度转化
将三通道图像转化为单通道图像
cv2.cvtColot(img,flag)
参数1:带转化图像
参数2:转换模型,cv2.COLOR_BGR2GRAY 彩色转灰度
1.7 RGB与BGR转化
opencv读取的图像的方式是以BGR的形式读取的,所以我们可以转化为RGB
方法1:cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
方法2:numpy方式 img[:,:,::-1]
1.8 通道分离
目的:将彩色图像分成B G R 3个单通道图像,方便我们对BGR三个通道分别进行操作
b,g,r= cv2.split(img)
参数1:待分离通道的图像
1.9 通道合并
img=cv2.merge([b,g,r])
参数1:待合并通道数,以list形式输入
2.1 图像直方图
图像直方图是用以表示数字图像中亮度分布的直方图,标绘了图像中每个亮度值的像素数。这种直方图中,横坐标的左侧为纯黑、较暗的区域,而右侧为较亮、纯白的区域。
意义:直方图是图像中像素强度分布的图形表达方式,统计了每一个强度值所具有的像素个数
cv领域常借助图像直方图来实现图像的二值化
2.2 直方图绘制
cv2.calcHist([images],channels,mask,histSize,ranges)
hist=cv2.calcHist([img],[0],None,[256],[0,256])
参数1:带统计图像,需要用中括号括起来
参数2:待计算的通道
参数3:mask 没有使用所以用None
参数4:histSize 表示直方图分成多少份
参数5:表示直方图中各个像素的值,[0.0,256.0]
2.3 颜色空间
颜色空间又称彩色模型,它的用途是在某些标准下用通常可接受的方式对彩色加以说明
常见的颜色空间:RGB、HSV、HSI、CMYK
色彩空间转换
import cv2
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
hsv=cv2.cvtColor(image,cv2.COLOR_BGR2HSV)