其他分享
首页 > 其他分享> > 06_边界填充

06_边界填充

作者:互联网

# 边界填充

# 1. 边界填充简介
"""① 边界填充就是对图像进行一些变换,让原始图像进行扩大。

② 边界填充的入口参数:
- BORDER_REPLICATE:复制法,也就是复制最边缘像素。
- BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb
- BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba
- BORDER_WRAP:外包装法cdefgh|abcdefgh|abcdefg
- BORDER_CONSTANT:常量法,常数值填充。"""


import cv2 #opencv的缩写为cv2
import matplotlib.pyplot as plt # matplotlib库用于绘图展示
import numpy as np   # numpy数值计算工具包
#
img = cv2.imread('D:/pycharm/pycharm-cope/opencv/resource/photo/01_cat.jpg')

top_size,bottom_size,left_size,right_size = (50,50,50,50)  # 填充多少区域

# 最后一个入口参数为填充方式

# 方式一:复制法
replicate = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REPLICATE)
# 方式二:反射法
reflect = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT)
# 方式三:反射法二(不要最边缘的像素)
reflect101 = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT_101)
# 方式四:外包装法
wrap = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_WRAP)
# 方式五:常量法
constant = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_CONSTANT,value=0)

import matplotlib.pyplot as plt
plt.subplot(231), plt.imshow(img,'gray'), plt.title('ORIGINAL')
plt.subplot(232), plt.imshow(replicate,'gray'), plt.title('REPLICATE')
plt.subplot(233), plt.imshow(reflect,'gray'), plt.title('REPLECT')
plt.subplot(234), plt.imshow(wrap,'gray'),plt.title('REFLECT_101')
plt.subplot(235), plt.imshow(wrap,'gray'),plt.title('WRAP')
plt.subplot(236), plt.imshow(constant,'gray'),plt.title('CONSTAVI')

plt.show()
# 2. 阈值越界处理

# img_cat = cv2.imread('D:/pycharm/pycharm-cope/opencv/resource/photo/01_cat.jpg')
# img_dog = cv2.imread('D:/pycharm/pycharm-cope/opencv/resource/photo/01_cat.jpg')
#
# img_cat2 = img_cat + 10 # 将 img_cat 矩阵中每一个值都加 10
# print(img_cat[:5, :, 0])
# # [[142 146 151 ... 156 155 154]
# #  [108 112 118 ... 155 154 153]
# #  [108 110 118 ... 156 155 154]
# #  [139 141 148 ... 156 155 154]
# #  [153 156 163 ... 160 159 158]]
# print(img_cat2[:5, :, 0])
# # [[152 156 161 ... 166 165 164]
# #  [118 122 128 ... 165 164 163]
# #  [118 120 128 ... 166 165 164]
# #  [149 151 158 ... 166 165 164]
# #  [163 166 173 ... 170 169 168]]
# print((img_cat+img_cat2)[:5, :, 0])  # 0-255 若相加越界后 294 用 294%256 获得余数 38
# # [[ 38  46  56 ...  66  64  62]
# #  [226 234 246 ...  64  62  60]
# #  [226 230 246 ...  66  64  62]
# #  [ 32  36  50 ...  66  64  62]
# #  [ 60  66  80 ...  74  72  70]]
# cv2.add(img_cat, img_cat2)[:5, 0] # cv2.add 是越界后取最大值 255
# print(cv2.add(img_cat, img_cat2)[:5, 0])
# # [[255 255 255]
# #  [226 244 255]
# #  [226 248 255]
# #  [255 255 255]
# #  [255 255 255]]

 

标签:...,plt,06,边界,img,cv2,填充,255,size
来源: https://www.cnblogs.com/tuyin/p/16546179.html