【Python】Sobelフィルタを使う

 

この記事では、Sobleフィルタを使って画像を変換してみます。

具体的には、

  1. 画像を読み込む
  2. グレースケールにする
  3. Sobelフィルタをかける
  4. 画像を表示、ファイルに書きだす

というステップでJupyter Notebookに書いていきます。

[toc]

コード

 

%matplotlib inline
import cv2
import matplotlib.pyplot as plt

path = "/home/matsu/notebook/data/flower.jpg"

im = cv2.imread(path)

#Gray Scaleへ変換
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)

#Sobelフィルタでx方向のエッジ検出
gray_sobelx = cv2.Sobel(gray,cv2.CV_32F,1,0)

# 読み込んだ画像をウインドウに張り付ける
plt.imshow(gray_sobelx)
# ウインドウをグレースケールモードにする
plt.gray()
# ウインドウを表示する
plt.show()

cv2.imwrite('sobel.jpg', gray_sobelx)

 

「%matplotlib inline」は、画像をJupyter上に表示させるためのおまじないです。

 

使用する画像

元画像です。

実行結果

 

Jupyter上で実行するとなぜか見辛い画像になってしまいました。

 

ファイル出力された画像です。こちらが正しい感じがしますね。

おわり。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog