下面的代码添加了一个大小恒定的边框10
像素到原始图像的所有四个边。
对于颜色,我假设您想要使用背景的平均灰度值,这是我根据图像底部两行的平均值计算得出的。抱歉,有些硬编码,但显示了一般操作方法,并且可以根据您的需求进行调整。
如果你走border_size
底部和右侧的值0
,你甚至会得到一个对称的边框。
其他值BORDER_TYPE
都是可能的,比如BORDER_DEFAULT
, BORDER_REPLICATE
, BORDER_WRAP
.
更多详情参见:http://docs.opencv.org/trunk/d3/df2/tutorial_py_basic_ops.html#gsc.tab=0 http://docs.opencv.org/trunk/d3/df2/tutorial_py_basic_ops.html#gsc.tab=0
import numpy as np
import cv2
im = cv2.imread('image.jpg')
row, col = im.shape[:2]
bottom = im[row-2:row, 0:col]
mean = cv2.mean(bottom)[0]
border_size = 10
border = cv2.copyMakeBorder(
im,
top=border_size,
bottom=border_size,
left=border_size,
right=border_size,
borderType=cv2.BORDER_CONSTANT,
value=[mean, mean, mean]
)
cv2.imshow('image', im)
cv2.imshow('bottom', bottom)
cv2.imshow('border', border)
cv2.waitKey(0)
cv2.destroyAllWindows()