#-*- coding:utf-8 -*-
import cv2
import numpy as np

# 入力画像を読み込み
img = cv2.imread("C:/github/sample/python/opencv/filter2d/sobel/input.png")

# グレースケール変換
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

# カーネル（水平、垂直方向の輪郭検出用）
kernel_x = np.array([[-1, 0, 1],
                     [-2, 0, 2],
                     [-1, 0, 1]])

kernel_y = np.array([[-1, -2, -1],
                     [0, 0, 0],
                     [1, 2, 1]])

# 方法2
gray_x = cv2.filter2D(gray, cv2.CV_64F, kernel_x)
gray_y = cv2.filter2D(gray, cv2.CV_64F, kernel_y)

dst = np.sqrt(gray_x ** 2 + gray_y ** 2)

# 結果を出力
cv2.imwrite("C:/github/sample/python/opencv/filter2d/sobel/output.png", dst)
