Se ho un'immagine come sotto, come posso aggiungere un bordo intorno all'immagine in modo che l'altezza e la larghezza complessive dell'immagine finale aumentino ma l'altezza e la larghezza dell'originale l'immagine rimane così com'è nel mezzo.come aggiungere un bordo attorno a un'immagine in opencv python
risposta
Il codice seguente aggiunge un bordo costante di dimensioni 10 pixel a tutti e quattro i lati della vostra immagine originale.
Per il colore, ho assunto che si voglia utilizzare il valore medio di grigio dello sfondo, che ho calcolato dal valore medio delle due righe inferiori dell'immagine. Mi dispiace, un po 'difficile da codificare, ma mostra l'orientamento generale e può essere adattato alle tue esigenze.
Se si lasciano i valori di ridimensionamento per il fondo e destra a 0, si ottiene anche un bordo simmetrico.
Altri valori per BORDER_TYPE sono possibili, come BORDER_DEFAULT, BORDER_REPLICATE, BORDER_WRAP.
Per maggiori dettagli FC: 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()
Usando il tutorial ho pensato che il valore per Rosso (etichettato in modo confuso con Blue) dovrebbe essere [255, 0, 0]. Ma in realtà era [1.0, 0, 0] con float come i valori del valore dell'immagine. – hum3
provate questo:
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
Come su [cv2.copyMakeBorder] (http://docs.opencv.org/2.4/modules/imgproc/ doc/filtering.html # vuoto% 20copyMakeBorder% 28InputArray% 20src,% 20OutputArray% 20dst,% 20int% 20top,% 20int% 20bottom,% 20int% 20left,% 20int% 20right,% 20int% 20borderType,% 20const% 20Scalar &% 20value % 29)? –