我一直在尝试一个简单的窗口,带有设置二进制化阈值的跟踪栏。
我已经看到几个在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:UsersLaurent ThomasDocumentsDataSet170922110941_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()
按如下方式修改Update
函数:
# callback function
def Update(value):
global ImageBin
print (value)
ret,ImageBin = cv2.threshold(Image,value,255,cv2.THRESH_BINARY)