소스 뷰어
import cv2, numpy as np, matplotlib.pyplot as plt
import scipy
# 이미지 불러오기 (흑백)
image = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)
# 커널 정의 (엣지 검출)
kernel = np.array([
[-1, -1, -1],
[-1, 8, -1],
[-1, -1, -1]
])
# SciPy를 이용한 컨볼루션 수행
convoluted_image = scipy.signal.convolve2d( image, kernel )
# 결과 값이 0~255를 벗어나지 않도록 클리핑
convoluted_image = np.clip(convoluted_image, 0, 255)
# matplotlib을 이용한 출력
plt.figure(figsize=(10, 5))
# 원본 이미지 출력
plt.subplot(1, 2, 1)
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.axis('off')
# 컨볼루션 이미지 출력
plt.subplot(1, 2, 2)
plt.imshow(convoluted_image, cmap='gray')
plt.title('SciPy Convoluted Image (Edge Detection)')
plt.axis('off')
plt.tight_layout()
plt.show()