目录
1.图像的IO操作、读取和保存
1.1读取图像
cv2.imread('image.jpg', 0)
读取方式的标志
- 1: cv2.IMREAD*COLOR, 以彩色模式加载图像,任何图像的透明度都将被忽略。默认参数
- 0:cv2.IMREAD*GRAYSCALE,灰度模式加载图像
- -1:cv2.IMREAD_UNCHANGED,包括alpha通道的加载图像模式
1.2显示图像
cv2.imshow('image', img)
在调用显示图像的API后,要用cv.waitKey()给图像绘制留下时间,否则窗口会出现无响应情况,并且图像无法显示。
1.3保存图像
cv2.imwrite('python', img)
2.绘制几何图形
2.1绘制直线
cv2.line(img, start, end, color, thickness)
- img:要绘制直线的图像
- start, end:直线的起点和终点
- color:线条的颜色
- thickness:线条宽度
2.2绘制圆形
cv2.circle(img, centerpoint, r, color, thickness)
- img:要绘制圆形的图像
- centerpoint,r:圆心和半径
- color:线条颜色
- thcikness:线条宽度。为-1时生成闭合图案并填充颜色
2.3绘制矩形
cv2.rectangle(img, leftupper, rightdown, color, thickness)
- img:要绘制矩形的图像
- leftupper, rightdown:矩形的左上角和右下角
- color:线条颜色
- thickness:线条宽度
2.4添加文字
cv2.putText(img, text, station, font, fontsize, color, thickness, cv.LINE_AA)
- img:图像
- text:写入文本的内容
- station:文本框的位置
- font:字体
- fontsize:字体大小
3.获取图像的属性
- 形状:img.shape
- 图像大小:img.size
- 数据类型:img.dtype
4.访问图像的像素,进行通道分离、合并
# 通道拆分
b, g, r = cv2.split(img)
# 通道合并
img = cv2.merge((b, g, r))
5.颜色空间的变换
opencv有150多种颜色空间转换方法。最常用的有两种,BGR-->Gray和BGR-->HSV。
cv2.cvtColor(input_image, flag)
- flag:转换类型。cv2.COLOR_BGR2GRAY:BGR-->Gray, cv2.COLOR_BGR2HSV:BGR-->HSV。
6.图像算术运算
6.1 图像加法
两个图象是相同大小和类型,或者第二个图象是标量值。
opencv加法和numpy加法之间存在差异,opencv是饱和操作,numpy是模运算。
x = np.unit8([250])
y = np.nint8([10])
print(cv2.add(x,y)) # 250 + 10 = 260 =>255
print(x + y) # 250 + 10 = 260 % 256 = 4
6.2图像混合
图像相加,但是两幅图像权重不同。有一种混合或者透明的感觉。公式为:
g(x) = (1 - a)*f(x) + a*g(x). 0<=a<=1
cv2.addWeighted(img1, 0.7, img2, 0.3, 0)
dst = a1*img1 + a2*img2 + a3 a3一般为0