1 载入图片并显示
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import torch
import torchvision.transforms as transforms
import os
os.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()