Trackbar回调python openCV

时间:2017-10-11 14:02:36

标签: python user-interface opencv callback

我一直试图建立一个简单的窗口,其中一个轨迹栏设置了二值化的阈值 我在一个while循环中看到了几个使用跟踪栏的getTrackbarPos方法的示例,但是使用回调函数并不多,我想使用(或者至少理解为什么getTrackbarPos更好)<登记/> 我实际上在移动滑块时看到了阈值图像,但它几乎被原始图像瞬间取代。 我也尝试在回调函数中使用global ImageBin,但它没有帮助。 有人有建议或者可以将我转发给类似的问题吗? 感谢

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()

1 个答案:

答案 0 :(得分:1)

修改Update功能,如下所示:

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