Python OpenCV / 線画作成にも使える Canny法エッジ検出とトラックバー

プラグラミング言語「PYTHON」を使ってみよう!!

業務自動化・効率化の実例を踏まえ、解説できればと思っています。対象は、プログラムを学び始めた初心者向けとなります。

今回の内容

  • canny法エッジ検出のパラメーターをトラックバーで設定する



使用するのはopenCV

使用するのは、画像処理ライブラリのopenCVです。ここではopenCVがインストールされているのを前提として書き進めていきます。

サンプルコード

import cv2
import numpy as np

def trackbar(position):
    pass

img = cv2.imread("photo1.jpg", 0)

# トラックバーを表示するウィンドウを作成
cv2.namedWindow("window")
# 初期値
miniVal = 50
maxVal = 100

cv2.createTrackbar("miniVal", "window", miniVal, 300, trackbar)
cv2.createTrackbar("maxVal", "window", maxVal, 400, trackbar)

switch = '0 : 黒 \n1 : 白'
cv2.createTrackbar(switch, 'window',0,1,trackbar)

while True:
    edges = cv2.Canny(img, miniVal, maxVal)
    edges_bit = cv2.bitwise_not(edges)
    # トラックバーの位置をthreshholdに代入
    miniVal = cv2.getTrackbarPos("miniVal", "window")
    maxVal = cv2.getTrackbarPos("maxVal", "window")
    s = cv2.getTrackbarPos(switch,'window')
    
    if s == 1:
        edges = edges_bit

    # 画像を表示する
    cv2.imshow("window", edges)
    
    if cv2.waitKey(10) == 27:
        print(miniVal,maxVal)
        break

cv2.destroyAllWindows()
exit()

出力

コメント

画像の変化を見ながら、threshold1, threshold2をトラックバーで設定できるようにしました。

スイッチで白黒反転できます。白背景が良い場合は、スイッチを1に設定します。



タイトルとURLをコピーしました