
まくまく
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に設定します。