目录

一、环境

二、原理

三、完整代码


一、环境

本文使用环境为:

二、原理

cv.copyMakeBorder是OpenCV库中一个函数用于图像周围添加边框padding)。这个函数可以用于图像预处理、增强等任务。它的基本语法如下

dst = cv.copyMakeBorder(src, top, bottom, left, right, borderType, value)

其中,cv.copyMakeBorder支持以下几种边框类型:

  1. cv.BORDER_CONSTANT常数填充,即用一个固定的值填充边框
  2. cv.BORDER_REFLECT反射填充,即用图像边界像素值进行填充
  3. cv.BORDER_REFLECT_101反射填充,与cv.BORDER_REFLECT类似,但使用不同边界像素值。
  4. cv.BORDER_WRAP循环填充,即用图像边界像素值进行填充,形成一个环状的效果
  5. cv.BORDER_REPLICATE复制填充,即用图像边界像素值进行填充。
  6. 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进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注