close

how to add border around an image in opencv python

Hello Guys, How are you all? Hope You all Are Fine. Today We Are Going To learn about how to add border around an image in opencv python in Python. So Here I am Explain to you all the possible Methods here.

Without wasting your time, Let’s start This Article.

Table of Contents

how to add border around an image in opencv python?

  1. how to add border around an image in opencv python?

    I have assumed that you want to use the average gray value of the background, which I have calculated from the mean value of bottom two lines of your image.

  2. add border around an image in opencv python

    I have assumed that you want to use the average gray value of the background, which I have calculated from the mean value of bottom two lines of your image.

Method 1

The following code adds a constant border of size 10 pixels to all four sides of your original image.

For the colour, I have assumed that you want to use the average gray value of the background, which I have calculated from the mean value of bottom two lines of your image. Sorry, somewhat hard coded, but shows the general how-to and can be adapted to your needs.

If you leave bordersize values for bottom and right at 0, you even get a symmetric border.

Other values for BORDER_TYPE are possible, such as BORDER_DEFAULT, BORDER_REPLICATE, BORDER_WRAP.

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

Method 2

Try This:

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

Conclusion

It’s all About this issue. Hope all Methods helped you a lot. Comment below Your thoughts and your queries. Also, Comment below which Method worked for you? Thank You.

Also, Read