Aşağıdaki gibi bir resmim varsa, görüntünün genel yüksekliğini ve genişliğini artıracak şekilde orijinalin yüksekliğini ve genişliğini artıracak şekilde resmin etrafına nasıl kenarlık ekleyebilirim? görüntü ortada olduğu gibi kalır.opencv python'da görüntünün çevresine kenarlık ekleme
cevap
Aşağıdaki kod boyutu orijinal görüntünün dört tarafına 10 piksel sabit bir sınır ekler.
Renk için, görüntünün alt iki satırının ortalama değerinden hesapladığım arka planın ortalama gri değerini kullanmak istediğinizi varsaymıştım. Üzgünüz, biraz sabit kodlanmış, ama genel nasıl yapılır gösterir ve ihtiyaçlarınıza göre uyarlanabilir.
0 ile altta ve sağdaki değerleri sınırlarsanız, simetrik bir kenarlık bile elde edersiniz.
BORDER_DEFAULT, BORDER_REPLICATE, BORDER_WRAP gibi diğer değerler BORDER_TYPE için mümkündür. Daha fazla ayrıntı için
cf: http://docs.opencv.org/trunk/d3/df2/tutorial_py_basic_ops.html#gsc.tab=0import 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()
Öğreticiyi kullanma Kırmızı (karışık şekilde mavi olarak işaretlenmiş) değerinin [255, 0, 0] olması gerektiğini düşündüm. Ama aslında görüntü değeri renkleri olarak yüzer ile [1.0, 0, 0] oldu. – hum3
Bu deneyin:
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
Nasıl ([cv2.copyMakeBorder] hakkında http://docs.opencv.org/2.4/modules/imgproc/ doc/filtering.html # geçersiz% 20copyMakeBorder% 28InputArray% 20src,% 20OutputArray% 20dst,% 20int% 20top,% 20int% 20bottom,% 20int% 20left,% 20int% 20right,% 20int% 20borderType,% 20const% 20Scalar &% 20value % 29)? –