例子源于OpenCV官网手册(https://docs.opencv.org/4.x/dc/da3/tutorial_copyMakeBorder.html)
使用OpenCV函数copyMakeBorder()来设置边框(额外的填充图像)。
**
源代码:**
"""
@file copy_make_border.py
@brief Sample code that shows the functionality of copyMakeBorder
"""
import sys
from random import randint
import cv2 as cv
def main(argv):
#首先,我们声明将要使用的变量:
borderType = cv.BORDER_CONSTANT
window_name = "copyMakeBorder Demo"
#特别需要注意的是变量rng,它是一个随机数生成器。我们用它来生成随机的边框颜色,我们很快就会看到。
#加载一个图像
#像往常一样,我们加载源图像src:
imageName = argv[0] if len(argv) > 0 else 'lena.jpg'
# Loads an image
src = cv.imread(cv.samples.findFile(imageName), cv.IMREAD_COLOR)
# Check if image is loaded fine
if src is None:
print ('Error opening image!')
print ('Usage: copy_make_border.py [image_name -- default lena.jpg] n')
return -1
print ('n'
't copyMakeBorder Demo: n'
' -------------------- n'
' ** Press 'c' to set the border to a random constant value n'
' ** Press 'r' to set the border to be replicated n'
' ** Press 'ESC' to exit the program ')#简单介绍了如何使用该程序
#创建一个窗口:
cv.namedWindow(window_name, cv.WINDOW_AUTOSIZE)
#初始化参数
#现在,我们初始化定义边框大小(上、下、左、右)的参数。我们给他们一个src大小的5%的值。
top = int(0.05 * src.shape[0]) # shape[0] = rows
bottom = top
left = int(0.05 * src.shape[1]) # shape[1] = cols
right = left
while 1:
#随机的颜色。在每次迭代中(0.5秒后),随机边界颜色(值)被更新…
value = [randint(0, 255), randint(0, 255), randint(0, 255)]#这个值是在[0,255]范围内随机选取的三个数字的集合。
#在图像周围形成一个边框
#最后,我们调用copyMakeBorder()函数来应用相应的填充:
dst = cv.copyMakeBorder(src, top, bottom, left, right, borderType, None, value)
cv.imshow(window_name, dst)#显示结果
#循环
#当ESC键未按下时,程序运行在一个无限循环中。如果用户按下'c'或'r',则borderType变量分别取BORDER_CONSTANT或BORDER_REPLICATE的值:
c = cv.waitKey(500)
if c == 27:
break#如果你按“ESC”,程序将退出。
elif c == 99: # 99 = ord('c')
borderType = cv.BORDER_CONSTANT#如果按“c”,则会再次出现随机颜色的边框
elif c == 114: # 114 = ord('r')
borderType = cv.BORDER_REPLICATE#如果你按下'r',边界将变成边缘像素的副本。
return 0
if __name__ == "__main__":
main(sys.argv[1:])
暑期编程PK赛
得CSDN机械键盘等精美礼品!


