| 边界填充就是对图像进行一些变换,让原始图像进行扩大。 |
| |
| 边界填充的入口参数: |
| BORDER_REPLICATE:复制法,也就是复制最边缘像素。 |
| BORDER_REFLECT:反射法,对感兴趣的图像中的像素在两边进行复制例如:fedcba|abcdefgh|hgfedcb |
| BORDER_REFLECT_101:反射法,也就是以最边缘像素为轴,对称,gfedcb|abcdefgh|gfedcba |
| BORDER_WRAP:外包装法cdefgh|abcdefgh|abcdefg |
| BORDER_CONSTANT:常量法,常数值填充。 |
| |
| import cv2 |
| import matplotlib.pyplot as plt |
| import numpy as np |
| |
| |
| %matplotlib inline |
| |
| img = cv2.imread('01_Picture/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() |
-
执行结果

-
阈值越界处理
| img_cat = cv2.imread('01_Picture/01_cat.jpg') |
| img_dog = cv2.imread('01_Picture/03_dog.jpg') |
| |
| img_cat2 = img_cat + 10 |
| print(img_cat[:5,:,0]) |
| print(img_cat2[:5,:,0]) |
| print((img_cat+img_cat2)[:5,:,0]) |
| [[142 146 151 ..., 156 155 154] |
| [107 112 117 ..., 155 154 153] |
| [108 112 118 ..., 154 153 152] |
| [139 143 148 ..., 156 155 154] |
| [153 158 163 ..., 160 159 158]] |
| |
| [[152 156 161 ..., 166 165 164] |
| [117 122 127 ..., 165 164 163] |
| [118 122 128 ..., 164 163 162] |
| [149 153 158 ..., 166 165 164] |
| [163 168 173 ..., 170 169 168]] |
| |
| [[ 38 46 56 ..., 66 64 62] |
| [224 234 244 ..., 64 62 60] |
| [226 234 246 ..., 62 60 58] |
| [ 32 40 50 ..., 66 64 62] |
| [ 60 70 80 ..., 74 72 70]] |
| cv2.add(img_cat,img_cat2)[:5,0] # cv2.add 是越界后取最大值 255 |
| array([[255, 255, 255], |
| [224, 246, 255], |
| [226, 248, 255], |
| [255, 255, 255], |
| [255, 255, 255]], dtype=uint8) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术