当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.image.sobel_edges用法及代码示例


返回一个持有 Sobel 边图的张量。

用法

tf.image.sobel_edges(
    image
)

参数

  • image 形状为 [batch_size, h, w, d] 和类型 float32 或 float64 的图像张量。图片必须为 2x2 或更大。

返回

  • 张量保持每个通道的边图。返回一个形状为 [batch_size, h, w, d, 2] 的张量,其中最后两个维度包含 [[dy[0], dx[0]], [dy[1], dx[1]], 。 .., [dy[d-1], dx[d-1]]] 使用 Sobel 滤波器计算。

示例用法:

对于一般用途,image 将从以下文件加载:

image_bytes = tf.io.read_file(path_to_image_file)
image = tf.image.decode_image(image_bytes)
image = tf.cast(image, tf.float32)
image = tf.expand_dims(image, 0)

但出于演示目的,我们为 image 使用随机生成的值:

image = tf.random.uniform(
  maxval=255, shape=[1, 28, 28, 3], dtype=tf.float32)
sobel = tf.image.sobel_edges(image)
sobel_y = np.asarray(sobel[0,:,:,:, 0]) # sobel in y-direction
sobel_x = np.asarray(sobel[0,:,:,:, 1]) # sobel in x-direction

为了显示 sobel 结果,可以使用 PIL 的 Image Module:

# Display edge maps for the first channel (at index 0)
Image.fromarray(sobel_y[..., 0] / 4 + 0.5).show()
Image.fromarray(sobel_x[..., 0] / 4 + 0.5).show()

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.image.sobel_edges。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。