一、基础介绍
-
图像坐标
图像的原点是左上角的点,终点在右下角。
-
opencv读取的颜色是BGR的。
img = cv2.imread(image)
cv2.cvtColor(img,cv2.COLOR_BGR2RGB)#颜色转换 BGR ——> RGB
二、基本操作
- 绘制直线、矩形及圆
新建一个全黑的图,作为底图.
图像是3维的,否则后面显示出来的图片是灰度图
blank = np.zeros((300,300,3),dtype = np.uint8)
画直线
color = (0,0,255)
img_line = cv2.line(blank,(0,0),(100,100),color = color,thickness=10)#原图blank也变了
show(img_line)
画矩形
color = (0,255,255)
img_rectangle = cv2.rectangle(blank,(100,100),(200,200),color = color,thickness=10)
show(img_rectangle)
画圆
color = (255,0,255)
img_circle = cv2.circle(blank,(200,200),50,color = color,thickness=10)
show(img_circle)
当thickness为负数时,填充效果。
- 图像翻转
cv2.flip()
有返回值,不会改变原始图像
1 水平翻转
img1 = cv2.flip(img,1)
show(img)
show(img1)
注意看,是真的水平翻转了
垂直翻转
img0 = cv2.flip(img,0)
show(img)
show(img0)
3. 图像加、减法操作
uint8表示的数值范围:0~255.
加法
图像加法操作:当累加和超过255,用255代替。一般加法:当累加和超过255,和为累加和-255.
图像加法让图像变亮
减法
图像减法操作:当差值小于0,用0代替。一般加法:当差值小于0,结果为256+差值。
图像减法让图像变暗
4. 按位操作
按位与:bitwise_and
#遇黑变黑,用来屏蔽
按位或:bitwise_or
# #遇白变白,用来屏蔽
按位疑惑:bitwise_xor
按位非:bitwise_not
按位与
img = cv2.bitwise_and(img_circle,img_rectangle)
fig = plt.figure()
fig.add_subplot(1,3,1)
show(img_rectangle)
fig.add_subplot(1,3,2)
show(img_circle)
fig.add_subplot(1,3,3)
show(img)
plt.show()
与
或
异或
非
5. 遮挡
通过按位操作中 按位与:bitwise_and
#遇黑变黑,用来屏蔽按位或:bitwise_or
# 遇白变白,用来屏蔽,可将指定区域变白或变黑,达到屏蔽效果。
fig = plt.figure(figsize=(15,50))
img = read_image('face.png')
fig.add_subplot(1,3,1)
show(img)
blank = np.zeros(img.shape,dtype=np.uint8)
fig.add_subplot(1,3,2)
show(blank)
white = (255,255,255)
img_rectangle = cv2.rectangle(blank,(15,15), (img.shape[1]-10,img.shape[0]-10),color = white,thickness = 10)
fig.add_subplot(1,3,3)
show(cv2.bitwise_or(img,img_rectangle))
按位或的遮挡, 有相框的效果
6. 切分通道及合并通道
(R, G, B) = cv2.split(image)#切分通道
merged = cv2.merge([R,G,B])#合并通道