OpenCVを使用してPythonでキャニーエッジ検出を使用して画像のエッジを検出してみます。
OpenCVモジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。
キャニーエッジ検出(CannyEdgeDetection)というのは、画像中の広範囲のエッジを検出するための多段階アルゴリズムです。ガウスフィルタを使用したノーズ抑制を利用して、ノイズや不要なディテールを減らし、イメージを単純化することができます。
■Python
今回のPythonのバージョンは、「3.8.2」を使用しています。(Windows10)
■画像を用意する
OpenCVモジュールで、キャニーエッジ検出を利用し、画像のエッジを検出を行っていきますがその前に、エッジを検出する画像を用意します。
今回は「circle_sample.jpg」という複数のカラフルな円の画像を用意しました。
保存されている場所は「C:\Users\user\test(フォルダパス)」です。
■OpenCVモジュールでキャニーエッジ検出を利用し画像のエッジを検出する
画像の用意ができましたので、OpenCVモジュールでキャニーエッジ検出を利用し画像のエッジを検出するスクリプトを書いていきます。
■コード
import cv2 image = cv2.imread(r"C:\Users\user\test\circle_sample.png") grayimg = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) edged = cv2.Canny(grayimg,30,200) cv2.imshow("CannyEdgeDetection", edged) cv2.waitKey(0) cv2.destroyAllWindows()
インポートで、cv2(OpenCV)モジュールを呼び出して、imread()関数で今回用意した画像を読み込みます。grayimg変数を用意し、cv2.cvtColor()関数の第2のパラメーターで、「cv2.COLOR_BGR2GRAY」と記述し、グレースケール画像に変換します。キャニーエッジ検出を使用する前に、最初に画像をグレースケールに変換するのが一般的です。グレースケールに変換することで、画像が大幅に簡略化されます。
読み込んだ画像をグレースケール画像に変換した後は、edged変数を用意し、cv2.Canny()関数を使ってキャニーエッジ検出を行います。()内の第1のパラメーターには、グレースケールに変換した画像を読み込んで、第2及び第3パラメーターには、最小および最大開口サイズを指定します。今回は「30,200」と指定します。
キャニーエッジ検出を利用しエッジを検出した画像をcv2.imshow()関数で表示させてみます。
■実行
今回書いたスクリプトを「cannyedgedetection_test.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行してみると、ウインドウが表示され、今回用意した画像がグレースケールに変換されてエッジが検出されていることを確認できました。
コメント