OpenCV Python如何为图像添加边框? 您所在的位置:网站首页 jquery作业给图片加边框 OpenCV Python如何为图像添加边框?

OpenCV Python如何为图像添加边框?

2024-05-20 18:49| 来源: 网络整理| 查看: 265

OpenCV Python如何为图像添加边框?

在图像处理中,经常需要添加边框来突出显示图像或者为图像留出空间供其他操作。本文将介绍如何使用OpenCV Python为图像添加边框。

方法一:使用cv2.copyMakeBorder函数

cv2.copyMakeBorder函数可以为图像添加任意宽度的边框,可以通过指定边框类型来控制边框的样式。

下面是一个简单的例子,演示如何为图像添加2个像素宽度的白色边框:

import cv2 # 读取图像 img = cv2.imread('example.jpg') # 为图像添加2个像素宽度的白色边框 border_img = cv2.copyMakeBorder(img, 2, 2, 2, 2, cv2.BORDER_CONSTANT, value=[255, 255, 255]) # 显示原图和添加边框后的图像 cv2.imshow('original', img) cv2.imshow('border', border_img) cv2.waitKey()

在上面的代码中,cv2.copyMakeBorder函数的第一个参数是输入图像,第二个参数和第三个参数是上边框和下边框的宽度,第四个参数和第五个参数是左边框和右边框的宽度,第六个参数cv2.BORDER_CONSTANT指定使用常数填充边界,第七个参数value指定边界的颜色值。

如果要添加不同样式的边框,只需要改变第六个参数就可以了。例如,下面的代码演示了如何添加黑色边框:

import cv2 # 读取图像 img = cv2.imread('example.jpg') # 为图像添加2个像素宽度的黑色边框,边框样式采用cv2.BORDER_REPLICATE border_img = cv2.copyMakeBorder(img, 2, 2, 2, 2, cv2.BORDER_REPLICATE) # 显示原图和添加边框后的图像 cv2.imshow('original', img) cv2.imshow('border', border_img) cv2.waitKey() 方法二:使用numpy.pad函数

numpy.pad函数也可以用来添加边框,使用方法比cv2.copyMakeBorder函数略有不同。

下面是一个例子,演示如何为图像添加2个像素宽度的白色边框:

import cv2 import numpy as np # 读取图像 img = cv2.imread('example.jpg') # 为图像添加2个像素宽度的白色边框 border_img = np.pad(img, ( (2, 2), (2, 2), (0, 0) ), mode='constant', constant_values=255) # 显示原图和添加边框后的图像 cv2.imshow('original', img) cv2.imshow('border', border_img) cv2.waitKey()

在上面的代码中,np.pad函数的第一个参数是输入的数组,第二个参数是边框宽度,每一个元素是一个元组,其中第一个元素是上边框或左边框的宽度,第二个元素是下边框或右边框的宽度。第三个参数是边框填充的模式,这里我们使用常数填充,所以指定mode=’constant’,第四个参数是填充边框使用的常数值,这里我们使用白色,所以指定constant_values=255。

方法三:使用numpy.vstack和numpy.hstack函数

numpy.vstack和numpy.hstack函数可以用来将几个图像组合在一起,从而形成一个新的图像。如果我们将原图像上下左右各添加一个像素,然后再将这几个图像组合在一起,就可以得到具有边框的新图像。

下面是一个例子,演示如何为图像添加1个像素宽度的黑色边框:

import cv2 import numpy as np # 读取图像 img = cv2.imread('example.jpg') # 在上下左右各添加1个像素宽度的黑色边框 h_border = np.zeros((img.shape[0]+2, 1, 3), dtype=np.uint8) v_border = np.zeros((1, img.shape[1]+2, 3), dtype=np.uint8) h_border.fill(0) v_border.fill(0) img_with_border = np.vstack([h_border, np.hstack([v_border, img, v_border]), h_border]) # 显示原图和添加边框后的图像 cv2.imshow('original', img) cv2.imshow('border', img_with_border) cv2.waitKey()

在上面的代码中,我们先初始化了一个宽度为1,颜色为黑色的边框。然后,使用numpy.hstack函数将左边框、原图像和右边框组合在一起,使用numpy.vstack函数将上边框、中间的图片和下边框组合在一起,最终得到一个具有边框的新图像。

结论

本文介绍了3种方法来为图像添加边框:cv2.copyMakeBorder函数、numpy.pad函数和numpy.vstack和numpy.hstack函数。根据具体情况选择合适的方法来添加边框即可。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有