cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value)
参数解释:
- src:原图像
- top,bottem,left,right:分别表示四个方向上边界的长度
- borderType:边界的类型
- value:如果borderType为cv2.BORDER_CONSTANT时需要填充的常数值
borderType | 解释 |
---|---|
cv2.BORDER_CONSTANT | 固定值填充,value为颜色值 |
cv2.BORDER_REFLECT | 边界元素的镜像,填充的边界与原图像边界对称,成镜像,fedcba |
cv2.BORDER_DEFAULT | 边界元素的镜像,填充的边界与原图像边界(忽略第一个元素)对称,成镜像,gfedcb |
cv2.BORDER_REPLICATE | 用原图像边界的第一个元素进行填充,aaaaa |
cv2.BORDER_WRAP | 取上下左右相反的镜像 |
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('sugar.jpg')
## 画图
def draw_img(i,img,title):
plt.subplot(2,3,i)
plt.imshow(img)
plt.axis('off')
plt.title(title)
## BGR转RGB
img_rgb = cv2.cvtColor(img_rgb,cv2.COLOR_BGR2RGB)
## 边界填充
constant = cv2.copyMakeBorder(img_rgb, 100, 100, 100, 100, cv2.BORDER_CONSTANT, value=[255, 0, 0])
reflect = cv2.copyMakeBorder(img_rgb, 100, 100, 100, 100, cv2.BORDER_REFLECT)
default = cv2.copyMakeBorder(img_rgb, 100, 100, 100, 100, cv2.BORDER_DEFAULT)
replicate = cv2.copyMakeBorder(img_rgb, 100, 100, 100, 100, cv2.BORDER_REPLICATE)
wrap = cv2.copyMakeBorder(img_rgb, 100, 100, 100, 100, cv2.BORDER_WRAP)
## 画图
draw_img(1,img_rgb,'original')
draw_img(2,constant,'constant')
draw_img(3,reflect,'reflect')
draw_img(4,default,'default')
draw_img(5,replicate,'replicate')
draw_img(6,wrap,'wrap')
plt.show()