• 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

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

  • 相关阅读:
    rtsp转webrtc的其他几个项目
    freeswitch之媒体协商模式
    排序算法 —— 希尔排序(图文超详细)
    Flink面试进阶篇
    IPEmotion曲线平滑计算
    博睿数据出席阿里云可观测技术峰会,数字体验管理驱动可持续发展
    毫米波雷达点云 DBSCAN聚类算法
    深度探索:智能家居背后的科技力量与伦理思考
    运动想象 (MI) 迁移学习系列 (9) : 数据对齐(EA)
    17. Spring Boot整合Thymeleaf
  • 原文地址:https://blog.csdn.net/weixin_44894162/article/details/126789731