【问题标题】:Trackbar callback python openCV轨迹栏回调 python openCV
【发布时间】:2017-10-11 22:14:13
【问题描述】:

我一直在尝试使用带有轨迹栏的简单窗口来设置二值化的阈值。
我已经看到了几个在 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()

【问题讨论】:

    标签: python user-interface opencv callback


    【解决方案1】:

    修改Update函数如下:

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

    【讨论】:

    • 好的,谢谢。奇怪的是我昨天做了那件事,但它没有用。也许需要一些退出和重新启动,或者一些仍在内存中的变量......谁知道
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2019-12-24
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多