java 提取轮廓_TensorFlow 卷积操作模拟sobel算子提取图像轮廓

本文展示了如何使用TensorFlow在Java中实现Sobel算子来提取图像的轮廓。首先,通过matplotlib库读取并显示图像,然后利用TensorFlow进行卷积操作,将Sobel算子应用到图像上。经过归一化处理后,转换为0-255范围的uint8类型,最后展示处理后的图像轮廓。

注意:

sobel算子不保证结果在0-255,需要做一次归一化处理,再乘以255

输出的数据shape与图像的shape不一样,需要一次转化

效果

4a35def39312ffb76e5bc2adb765df21.png

4ba91f60a668d8a11d45752bf9a8b7d0.png

代码

import matplotlib.pyplot as plt # plt 用于显示图片

import matplotlib.image as mpimg # mpimg 用于读取图片

import numpy as np

import tensorflow as tf

myimg = mpimg.imread('test.jpg') # 读取和代码处于同一目录下的图片

plt.imshow(myimg) # 显示图片

plt.axis('off') # 不显示坐标轴

plt.show()

print(myimg.shape)

full = np.reshape(myimg, [1, *myimg.shape])

inputfull = tf.Variable(tf.constant(1.0, shape=[1, *myimg.shape]))

filter = tf.Variable(tf.constant([[-1.0, -1.0, -1.0], [0, 0, 0], [1.0, 1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值