當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。