• OpenCV使用教程-图像边界填充


    1、常见填充方法说明:

    • 复制法,也就是复制最边缘的像素
    replicate=cv.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv.BORDER_REPLICATE)
    
    • 1
    • 反射法,54321|1234567|76543
    reflect=cv.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv.BORDER_REFLECT)
    
    • 1
    • 反射法,65432|1234567|65432 以1、7为轴
    reflect101=cv.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv.BORDER_REFLECT_101)
    
    • 1
    • 外包装法,34567|1234567|12345
    wrap=cv.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv.BORDER_WRAP)
    
    • 1
    • 常量法,常量值填充
    constant=cv.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv.BORDER_CONSTANT,value=0)
    
    • 1

    2、 案例展示:

    • 声明窗口规格为(2✖️3),1表示位置为1号位
    plt.subplot(2,3,1)
    
    • 1
    • 需要展示的子图片
    plt.imshow(img,'gray')
    
    • 1
    • 设置子图片标题
    plt.title('ORIGINAL')
    
    • 1
    • 展示图片集
    plt.show()
    
    • 1

    展示案例如下:

    import cv2 as cv
    img=cv.imread("../sources/cyq.jpg", cv.IMREAD_COLOR)
    top_size,bottom_size,left_size,right_size=(50,50,50,50)
    # 复制法,也就是复制最边缘的像素
    replicate=cv.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv.BORDER_REPLICATE)
    # 反射法,54321|1234567|76543
    reflect=cv.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv.BORDER_REFLECT)
    # 反射法,65432|1234567|65432 以1、7为轴
    reflect101=cv.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv.BORDER_REFLECT_101)
    # 外包装法,34567|1234567|12345
    wrap=cv.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv.BORDER_WRAP)
    # 常量法,常量值填充
    constant=cv.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv.BORDER_CONSTANT,value=0)
    
    import matplotlib.pyplot as plt
    plt.subplot(2,3,1),plt.imshow(img,'gray'),plt.title('ORIGINAL')
    plt.subplot(2,3,2),plt.imshow(replicate,'gray'),plt.title('replicate')
    plt.subplot(2,3,3),plt.imshow(reflect,'gray'),plt.title('reflect')
    plt.subplot(2,3,4),plt.imshow(reflect101,'gray'),plt.title('reflect101')
    plt.subplot(2,3,5),plt.imshow(wrap,'gray'),plt.title('wrap')
    plt.subplot(2,3,6),plt.imshow(constant,'gray'),plt.title('constant')
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    代码运行结果如下:
    在这里插入图片描述

  • 相关阅读:
    Pymoo学习 (1):基本概念
    stacking集成模型预测回归问题
    小白能理解的奈奎斯特采样及延伸出的理论
    手把手教你,Selenium 遇见伪元素该如何处理?
    微信小程序开发整理-mp3
    open62541学习:文件传输
    代码随想录算法训练营day52||674. 最长连续递增序列||718. 最长重复子数组||1143.最长公共子序列
    【MySQL】SQL优化、char、varchar、外键约束、排查慢sql等重点知识汇总
    旋转矩阵-数学理论
    Synology NAS群晖DS218play 运行内存测试
  • 原文地址:https://blog.csdn.net/weixin_44894162/article/details/126789731