ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

06_边界填充

2022-08-03 11:33:54  阅读:170  来源: 互联网

标签:... plt 06 边界 img cv2 填充 255 size


# 边界填充

# 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有