如何在opencv python中为图像添加边框

jjhzyzn0  于 2023-03-03  发布在  Python
关注(0)|答案(4)|浏览(255)

如果我有一个像下面这样的图像,我如何在图像周围添加边框,使最终图像的整体高度和宽度增加,但原始图像的高度和宽度保持在中间。

2ledvvac

2ledvvac1#

下面的代码将大小为10像素的固定边框添加到原始图像的所有四个边。
对于颜色,我假设你想使用背景的平均灰度值,这是我从你的图像底部两行的平均值计算出来的。抱歉,有些硬编码,但显示了一般的操作方法,可以适应你的需要。
如果您将border_size的底部和右侧值保留为0,您甚至会获得对称边框。
BORDER_TYPE的其它值也是可能的,例如BORDER_DEFAULTBORDER_REPLICATEBORDER_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]

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()
e1xvtsh3

e1xvtsh32#

在一行中回答

outputImage = cv2.copyMakeBorder(
                 inputImage, 
                 topBorderWidth, 
                 bottomBorderWidth, 
                 leftBorderWidth, 
                 rightBorderWidth, 
                 cv2.BORDER_CONSTANT, 
                 value=color of border
              )
mwngjboj

mwngjboj3#

试试这个:

import cv2
import numpy as np     

img=cv2.imread("img_src.jpg")
h,w=img.shape[0:2]

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
cunj1qz1

cunj1qz14#

使用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)

相关问题