segmentacion - procesamiento de imagenes opencv python
Cómo agregar un borde alrededor de una imagen en Python opencv (3)
Contesta en una linea
outputImage = cv2.copyMakeBorder(
inputImage,
topBorderWidth,
bottomBorderWidth,
leftBorderWidth,
rightBorderWidth,
cv2.BORDER_CONSTANT,
value=color of border
)
El siguiente código agrega un borde constante de tamaño de 10 píxeles a los cuatro lados de su imagen original.
Para el color, asumí que desea utilizar el valor de gris promedio del fondo, que he calculado a partir del valor medio de las dos líneas inferiores de su imagen. Lo sentimos, algo codificado, pero muestra los consejos generales y puede adaptarse a sus necesidades.
Si deja los valores de las fronteras en la parte inferior y derecha en 0, incluso obtendrá un borde simétrico.
Otros valores para BORDER_TYPE son posibles, como BORDER_DEFAULT, BORDER_REPLICATE, BORDER_WRAP.
Para obtener más detalles, consulte: 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()
Prueba esto:
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