当前位置:首页 >> 编程语言 >> 【Pytorch神经网络实战案例】09 使用卷积提取图片的轮廓信息(手动模拟Sobel算子),lg gt540

【Pytorch神经网络实战案例】09 使用卷积提取图片的轮廓信息(手动模拟Sobel算子),lg gt540

0evadmin 编程语言 1
文件名:【Pytorch神经网络实战案例】09 使用卷积提取图片的轮廓信息(手动模拟Sobel算子),lg gt540 【Pytorch神经网络实战案例】09 使用卷积提取图片的轮廓信息(手动模拟Sobel算子)

1 载入图片并显示 import matplotlib.pyplot as pltimport matplotlib.image as mpimgimport torchimport torchvision.transforms as transformsimport osos.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"### 1 载入图片并显示myimg = mpimg.imread('img.jpg')plt.imshow(myimg)plt.axis('off')plt.show()print(myimg.shape)# 输出 (497, 687, 3) 2 图片数据转化为张量 ### 2 图片数据转化为张量plt2tensor = transforms.ToTensor() # 实例化ToTensor()rgb_image = plt2tensor(myimg) # 进行图片转换print(rgb_image[0][0]) # 输出图片的部分数据print(rgb_image.shape) # 输出图片的形状# torch.Size([3, 497, 687])

3 定义Sobel卷积核

### 3 定义Sobel卷积核sobelfilter = torch.tensor([[-1.0,0.0,1.0],[-2.0,0.0,2.0],[-1.0,0.0,1.0]]*3).reshape([1,3,3,3]) # 定义Sobel卷积核print(sobelfilter)

4 卷积操作

### 4 卷积操作op = torch.nn.functional.conv2d(rgb_image.unsqueeze(0),sobelfilter,stride=3,padding=1) # 3个输入通道,生成1哥特征图ret = (op - op.min()).div(op.max() - op.min()) # 卷积结果进行处理ret = ret.clamp(0.0,1.0).mul(255).int() # 将卷积结果转化图片print(ret)### 灰度图plt.imshow(ret.squeeze(),cmap='Greys_r') # 显示图片plt.axis('off') # 不显示坐标轴plt.show()

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接