当前位置 博文首页 > OpenCV半小时掌握基本操作之边界填充

    OpenCV半小时掌握基本操作之边界填充

    作者:我是小白呀 时间:2021-09-15 18:22

    目录
    • 概述
    • 边界填充
    • 复制法
    • 反射法
    • 反射法 101
    • 外包法
    • 常量法

    【OpenCV】⚠️高手勿入! 半小时学会基本操作⚠️边界填充

    概述

    OpenCV 是一个跨平台的计算机视觉库, 支持多语言, 功能强大. 今天小白就带大家一起携手走进 OpenCV 的世界.

    在这里插入图片描述

    边界填充

    cv2.copyMakeBorder可以帮助我们实现边界填充.

    在这里插入图片描述

    格式:

    cv.copyMakeBorder(img,top, bottom, left, right ,borderType)
    

    参数:

    • img: 需要填充的图像
    • top: 上边界填充像素
    • bottom: 下边界填充像素
    • left: 左边界填充像素
    • right: 右边界填充像素
    • borderType: 图像填充的方法

    原图:

    在这里插入图片描述

    复制法

    复制法: 复制最边缘像素.

    例子:

    # 读取图片
    img = cv2.imread("picture2.jpg")
    
    # 填充像素
    top_size = 50
    bottom_size = 50
    left_size = 50
    right_size = 50
    
    # Replicate (复制法)
    replicate = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, borderType=cv2.BORDER_REPLICATE)
    cv2.imshow("replicate", replicate)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    输出结果:

    在这里插入图片描述

    反射法

    反射法, 对图像边缘像素进行反射.

    例子:

    # 读取图片
    img = cv2.imread("picture2.jpg")
    
    # 填充像素
    top_size = 50
    bottom_size = 50
    left_size = 50
    right_size = 50
    
    # Reflect (反射法)
    reflect = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_REFLECT)
    cv2.imshow("reflect", reflect)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    输出结果:

    在这里插入图片描述

    反射法 101

    反射法 101, 以边界为中心点, 对图像边缘像素进行反射.

    代码:

    # 填充像素
    top_size = 50
    bottom_size = 50
    left_size = 50
    right_size = 50
    
    # Reflect101 (反射法101)
    reflect101 = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_REFLECT_101)
    cv2.imshow("reflect101", reflect101)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    输出结果:

    在这里插入图片描述

    注: BORDER_REFLECT_101BORDER_REFLECT的区别是, BORDER_REFLECT_101以边界为中心反射扩充.

    外包法

    外包法: 用相反位置对图片进行包裹.

    代码:

    # 读取图片
    img = cv2.imread("picture2.jpg")
    
    # 填充像素
    top_size = 50
    bottom_size = 50
    left_size = 50
    right_size = 50
    
    # wrap (外包方法)
    wrap = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_WRAP)
    cv2.imshow("wrap", wrap)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    输出结果:

    在这里插入图片描述

    常量法

    常量法: 用常数值填充. 需要设置一个 value 值,代表填充的颜色.

    代码:

    # 读取图片
    img = cv2.imread("picture2.jpg")
    
    # 填充像素
    top_size = 50
    bottom_size = 50
    left_size = 50
    right_size = 50
    
    # constant (常量法)
    constant = cv2.copyMakeBorder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_CONSTANT, value=0)
    cv2.imshow("constant", constant)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    cv2.imwrite("constant.jpg", constant)
    

    调试输出:

    在这里插入图片描述

    jsjbwy
    下一篇:没有了