一、环境
二、原理
cv.copyMakeBorder
是OpenCV库中的一个函数,用于在图像周围添加边框(padding)。这个函数可以用于图像的预处理、增强等任务。它的基本语法如下:
dst = cv.copyMakeBorder(src, top, bottom, left, right, borderType, value)
src
:输入图像,可以是彩色或灰度图像。top
、bottom
、left
和right
:分别表示上、下、左、右方向上的边框宽度。如果设置为负数,则表示自动计算边框宽度。borderType
:边框类型,可以是上述提到的任意一种类型。value
:边框的颜色值。对于彩色图像,需要提供一个包含三个元素的元组(例如:(0, 0, 0)表示黑色);对于灰度图像,需要提供一个单一的数值(例如:0表示黑色)。
其中,cv.copyMakeBorder
支持以下几种边框类型:
cv.BORDER_CONSTANT
:常数填充,即用一个固定的值填充边框。cv.BORDER_REFLECT
:反射填充,即用图像边界的像素值进行填充。cv.BORDER_REFLECT_101
:反射填充,与cv.BORDER_REFLECT
类似,但使用不同的边界像素值。cv.BORDER_WRAP
:循环填充,即用图像边界的像素值进行填充,形成一个环状的效果。cv.BORDER_REPLICATE
:复制填充,即用图像边界的像素值进行填充。cv.BORDER_DEFAULT
:默认填充,即用0填充边框。
三、完整代码
import sys
from random import randint
import cv2 as cv
def main(argv):
borderType = cv.BORDER_CONSTANT
window_name = "copyMakeBorder Demo"
src = cv.imread(cv.samples.findFile('data/lena.jpg'), cv.IMREAD_COLOR)
## [create_window]
cv.namedWindow(window_name, cv.WINDOW_AUTOSIZE)
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:
# 待填充的随机颜色
value = [randint(0, 255), randint(0, 255), randint(0, 255)]
dst = cv.copyMakeBorder(src, top, bottom, left, right, borderType, None, value)
cv.imshow(window_name, dst)
c = cv.waitKey(500)
if c == 27:
break
elif c == 99: # 99 = ord('c')
borderType = cv.BORDER_CONSTANT
elif c == 114: # 114 = ord('r')
borderType = cv.BORDER_REPLICATE
return 0
if __name__ == "__main__":
main(sys.argv[1:])
原文地址:https://blog.csdn.net/m0_72734364/article/details/134726136
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_43830.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。