答案 0 :(得分:20)
以下代码为原始图像的所有四个边添加一个大小为10像素的常量边框。
对于颜色,我假设您要使用背景的平均灰度值,我根据图像底部两行的平均值计算得出。对不起,有点硬编码,但显示了一般的操作方法,可以根据您的需要进行调整。
如果将bottomize和bottomize值保留为0,则甚至会得到对称边框。
BORDER_TYPE的其他值是可能的,例如BORDER_DEFAULT,BORDER_REPLICATE,BORDER_WRAP。
有关详细信息,请参阅: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]
bordersize=10
border=cv2.copyMakeBorder(im, top=bordersize, bottom=bordersize, left=bordersize, right=bordersize, 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()
答案 1 :(得分:9)
试试这个:
import cv2
img=cv2.imread("img_src.jpg")
shape=img.shape
w=shape[1]
h=shape[0]
base_size=h+20,w+20,3
#make a 3 channel image for base which is slightly larger than target img
base=np.zeros(base_size,dtype=np.uint8)
cv2.rectangle(base,(0,0),(w+20,h+20),(255,255,255),30)#really thick white rectangle
base[10:h+10,10:w+10]=img #this works
答案 2 :(得分:2)
一行答案
outputImage = cv2.copyMakeBorder(
inputImage,
topBorderWidth,
bottomBorderWidth,
leftBorderWidth,
rightBorderWidth,
cv2.BORDER_CONSTANT,
value=color of border
)
答案 3 :(得分:0)
使用openCV添加边框
import cv2
white = [255,255,255]
img1 = cv2.imread('input.png')
constant= cv2.copyMakeBorder(img1,20,20,20,20,cv2.BORDER_CONSTANT,value=white)
cv2.imwrite('output.png',constant)