2017-10-11 6 views
0

私は、バイナリ化のしきい値を設定するトラックバーを備えた単純なウィンドウを作成しようとしています。
whileループでトラックバーのgetTrackbarPosメソッドを使用した例をいくつか見てきましたが、使用したいコールバック関数を多く使用していません(少なくともgetTrackbarPosが良い理由を理解してください)
実際にはしきい値スライダーを動かすと、元の画像にほぼ瞬時に置き換えられます。 また、コールバック関数でglobal ImageBinを使用しようとしましたが、うまくいきません。 誰かが提案を持っているか、私に似たような問題を再ルーティングできますか? おかげTrackbarコールバックpython openCV

import cv2 

# callback function 
def Update(value): 
    print value 
    ret,ImageBin = cv2.threshold(Image,value,255,cv2.THRESH_BINARY) 
    cv2.imshow('Fenetre',ImageBin) 

# window 
cv2.namedWindow('Fenetre',cv2.WINDOW_GUI_NORMAL) 

# Trackbar 
Slider = cv2.createTrackbar('Threshold','Fenetre',0,255,Update) 

# Open image 
Home = r'C:\Users\Laurent Thomas\Documents\DataSet\170922110941_BISCHOFF_DORSAL_2ndGO' 
Image = cv2.imread(Home + '\WE00001---A001--PO01--LO001--CO6--SL001--PX32500--PW0040--IN0020--TM245--X014262--Y011163--Z216816--T1373979007.tif',0) 

# Initialise first view as the normal image 
ImageBin = Image[:] 


while(1): 
    cv2.imshow('Fenetre',ImageBin) 
    k = cv2.waitKey(1) & 0xFF 
    if k == 27: 
     break 


cv2.destroyAllWindows() 

答えて

0

次のようにUpdate機能を変更します。

# callback function 
def Update(value): 
    global ImageBin 
    print (value) 
    ret,ImageBin = cv2.threshold(Image,value,255,cv2.THRESH_BINARY) 
+0

さてさて、それは感謝を働きました。それは私が昨日それをやったのは奇妙です、そして、それは動作していませんでした。たぶん、いくつか終了し、必要な、またはメモリにまだ残っていたいくつかの変数を再起動...誰が知っている – Jindil