我的工作是在图像处理和我的麻烦在扩大图像与跟踪条。我可以在窗口中看到轨迹栏,但问题是它不能在图像上工作。我的意思是,当我改变轨迹栏中的扩张值时,图像并没有改变。İt正在处理阈值,ı没有问题。
def trackChaned(x):
pass
cv2.namedWindow('Thresh')
cv2.createTrackbar("Thresh Value", "Thresh",0,255,trackChaned)
cv2.createTrackbar("Dilation Value", "Thresh", 0,50,trackChaned)
img = cv2.resize(img, (0,0), fx=0.3, fy=0.3)
while(True):
threshValue = cv2.getTrackbarPos("Thresh Value", "Thresh")
dilationValue = cv2.getTrackbarPos("dilation Value", "Thresh")
ret,thresh1 = cv2.threshold(img,threshValue,255,cv2.THRESH_BINARY)
gray = cv2.cvtColor(thresh1,cv2.COLOR_BGR2GRAY)
ret, thresh1 = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
kernal = np.ones((2,2), np.uint8)
dilation = cv2.dilate(thresh1, kernal, iterations= dilationValue)
cv2.imshow("threshValue",thresh1)
if cv2.waitKey(1) == 27:
break
cv2.destroyAllWindows()
cv2.imshow('Test', thresh1)
cv2.waitKey(0)
gray = cv2.cvtColor(thresh1,cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
cv2.imshow('Test', thresh)
cv2.waitKey(0)发布于 2019-11-14 10:32:11
你的代码基本上没问题。但是有两个拼写错误导致了你的问题。
首先,一定要检查你注册的名字。在while循环中,您从dilation Value获取信息,同时将跟踪栏名称设置为Dilation Value。所以你需要解决这个问题。
cv2.createTrackbar("Dilation Value", "Thresh", 0,50,trackChaned)
dilationValue = cv2.getTrackbarPos("dilation Value", "Thresh")其次,您显示的是thresh1图像而不是dilation。所以你不会在视觉上发现任何变化。将其更改为dilation,就可以运行了。
(in while loop)
cv2.imshow("threshValue",thresh1)当你做扩容的时候,我建议你添加第三个轨迹条来找到最合适的kernel size。
https://stackoverflow.com/questions/58848242
复制相似问题