联合会员
周边
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
bluedream1000
博客园
首页
新随笔
联系
管理
订阅
随笔 - 28 文章 - 2 评论 - 0 阅读 -
29143
conda
conda config --set auto_activate_base false
好文要顶
关注我
收藏该文
微信分享
bluedream1000
粉丝 -
0
关注 -
10
+加关注
0
0
升级成为会员
«
上一篇:
jsoncpp 中文字符串被转为 \u uf8的解决办法
»
下一篇:
烟雾/火焰检测数据集整理
posted @
2020-09-29 16:07
bluedream1000
阅读(
77
) 评论(
0
)
编辑
收藏
举报
刷新页面
返回顶部
登录后才能查看或发表评论,立即
登录
或者
逛逛
博客园首页
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
编辑推荐:
·
Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
·
开发者必知的日志记录最佳实践
·
SQL Server 2025 AI相关能力初探
·
Linux系列:如何用 C#调用 C方法造成内存泄露
·
AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
·
无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
·
C#/.NET/.NET Core优秀项目和框架2025年2月简报
·
Manus爆火,是硬核还是营销?
·
一文读懂知识蒸馏
·
终于写完轮子一部分:tcp代理 了,记录一下
公告
用numpy.pad()对图像进行填充及简单的图像处理 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wang454592297/article/details/80854996 一、用numpy.pad()对图像进行填 我们都知道在css的盒子模型中,有padding(内边距)这一属性。同css中的padding类似,在numpy中,numpy.pad()可以跟矩阵添加内边距,这一方法在CNN中的卷积层可以用到,可以影响到卷积后矩阵的维度,其用法如下: numpy.pad(array, pad_width, mode, **kwargs)[source] 其中array是需要添加内边距的矩阵。pad_width对应矩阵每个维度填充的宽度,其格式是这样的:,表示第n维之前和时候填充的宽度。mode表示填充矩阵的值的模式,对应有:”constant“——表示用一个常量填充矩阵,“minimum”——用某个维度上的最小值填充矩阵,等其他模式。具体可参照官方APInumpy.pad。下面看一个用numpy.pad填充图像的例子,代码如下: import pylab import numpy as np from scipy import ndimage import matplotlib.pyplot as plt dir = "./testImgs/" filename = dir + "la_defense.jpg" ori_image = np.array(ndimage.imread(filename, flatten=False)) dim1_pad = np.pad(ori_image, ((50, 50), (0, 0), (0, 0)), 'constant', constant_values=0) dim2_pad = np.pad(ori_image, ((0, 0), (50, 50), (0, 0)), 'maximum') dim3_pad = np.pad(ori_image, ((50, 50), (50, 50), (0, 0)), 'constant', constant_values=200) print("origin shape:" + str(ori_image.shape)) print("vertical pad:" + str(dim1_pad.shape)) print("horizontal pad:" + str(dim2_pad.shape)) print("all pad:" + str(dim3_pad.shape)) fig, axarr = plt.subplots(2, 2) axarr[0, 0].imshow(ori_image) axarr[0, 1].imshow(dim1_pad[:, :, 0]) axarr[1, 0].imshow(dim2_pad[:, :, 1]) axarr[1, 1].imshow(dim3_pad[:, :, 2]) pylab.show() 显示的结果如下: 这里写图片描述 以上代码中用到了scipy.ndimage.imread读取图片,可以结合我的另一篇博客二、使用scipy读图片并改变图片大小进行理解。读到的图片是一个(1181,1181,3)的3维矩阵,第三维表示RGB三个通道。我分别在R、B、G三个通道上进行了填充,第二张图是在R通道的第一维(上下)分别填充50的像素的宽度,第三张图是在G通道的第二维(左右)分别填充50的像素的宽度(模式为minimum),第四张图是在B通道的第一、二维分别分别填充50的像素的宽度。可以看出,这四张图都是不一样的(尽管第三、四张图差别不大),填充后矩阵的维度如下: 这里写图片描述 二、简单的图像处理 在利用CNN进行图片分类的时候,有时候会缺少样本,我们可以通过用已有的样本来自己创建新的样本,如图像的旋转,裁剪,图像颜色的改变等。下面是通过改变图像的颜色来创建新的图片,代码如下: import pylab import numpy as np from scipy import ndimage import matplotlib.pyplot as plt def new_pic_arr(dim0, dim1, dim2, dim0_plus, dim1_plus,dim2_plus): pic = np.zeros((1181, 1181, 3), dtype=np.uint8) pic[:, :, 0] = dim0 + dim0_plus pic[:, :, 1] = dim1 + dim1_plus pic[:, :, 2] = dim2 + dim2_plus return pic dir = "./testImgs/" filename = dir + "la_defense.jpg" ori_image = np.array(ndimage.imread(filename, flatten=False)) dim0 = ori_image[:, :, 0] dim1 = ori_image[:, :, 1] dim2 = ori_image[:, :, 2] pic1 = new_pic_arr(dim0, dim1, dim2, 30, 0, 30) pic2 = new_pic_arr(dim0, dim1, dim2, 40, 40, 0) pic3 = new_pic_arr(dim0, dim1, dim2, 0, 40, 40) fig, axarr = plt.subplots(2, 2) axarr[0, 0].imshow(ori_image) axarr[0, 1].imshow(pic1) axarr[1, 0].imshow(pic2) axarr[1, 1].imshow(pic3) pylab.show() 最后的结果如下: 这里写图片描述 上述中的四副图中,图一是原始的图,图二是在原图的R、B通道上每个像素的值增加30后的结果,图三是在原图的R、G通道上每个像素的值增加40后的结果,图四是在原图的G、B通道上每个像素的值增加40后的结果。可以看出每张图的颜色都不同,我们可以利用这些新的样本来训练神经网路了。
昵称:
bluedream1000
园龄:
9年8个月
粉丝:
0
关注:
10
+加关注
<
2025年3月
>
日
一
二
三
四
五
六
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
搜索
我的标签
leetcode
(12)
github
(2)
图像处理
(2)
机器学习
(2)
python
(1)
ml
(1)
优化
(1)
随笔分类
leetcode(12)
数据集(1)
随笔档案
2022年5月(3)
2022年4月(2)
2021年12月(2)
2021年11月(1)
2020年9月(4)
2020年5月(1)
2020年4月(1)
2019年10月(1)
2019年3月(1)
2019年2月(11)
2017年9月(1)
阅读排行榜
1. 烟雾/火焰检测数据集整理(11204)
2. 遥感影像中变化检测数据集【转】(3471)
3. pycharm下安装numpy等ml库(2841)
4. 用numpy.pad()对图像进行填充及简单的图像处理(2657)
5. docker中安装python3.8(2584)
推荐排行榜
1. 烟雾/火焰检测数据集整理(1)
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下