当前位置:   article > 正文

python OpenCV的使用

python OpenCV的使用

 

使用 cv2.adaptiveThreshold 和 cv2.createTrackbar

  1. # %% todo: 使用 cv2.adaptiveThreshold 和 cv2.createTrackbar
  2. # ==============================================================================
  3. import cv2
  4. import numpy as np
  5. # 新建一个窗口
  6. cv2.namedWindow('img', cv2.WINDOW_NORMAL) # 可调整窗口大小
  7. cv2.resizeWindow("img", 800, 800) # 设置窗口的大小
  8. # 滑动条从0开始,为了使用特定的数值,采用数组和序号的方式。
  9. adaptiveMethods_i = 0
  10. adaptiveMethods = [cv2.ADAPTIVE_THRESH_MEAN_C, cv2.ADAPTIVE_THRESH_GAUSSIAN_C]
  11. thresholdType_i = 0
  12. thresholdTypes = [cv2.THRESH_BINARY, cv2.THRESH_BINARY_INV]
  13. blockSize_i = 0
  14. blockSizes = range(3, 100, 2)
  15. c_i = 0
  16. cs = range(-4, 4)
  17. imgGray2 = cv2.imread(r"E:\Testwork\imgGray2.bmp", cv2.IMREAD_GRAYSCALE)
  18. imgBin = cv2.adaptiveThreshold(imgGray2, 255, adaptiveMethods[adaptiveMethods_i],
  19. thresholdTypes[thresholdType_i], blockSizes[blockSize_i], cs[c_i],)
  20. flag = 0 # 为了滑动一次,只显示一次滑动结果
  21. def noting(x):
  22. # 拖动滑动条,cv2.getTrackbarPos 的回调函数不能获得滑动后的位置,只能使用上次的位置。
  23. # print(f'{adaptiveMethods_i:3d} {thresholdType_i:3d} {blockSizes[blockSize_i]:3d} {cs[c_i]}')
  24. global flag # 设置成全局变量
  25. flag = 1
  26. cv2.createTrackbar('adaptiveMethods_i', 'img', 0, 1, noting)
  27. cv2.createTrackbar('thresholdType_i', 'img', 0, 1, noting)
  28. cv2.createTrackbar('blockSize_i', 'img', 0, len(blockSizes)-1, noting)
  29. cv2.createTrackbar('c', 'img', 0, len(cs)-1, noting)
  30. while 1:
  31. cv2.imshow('img', imgBin)
  32. adaptiveMethods_i = cv2.getTrackbarPos('adaptiveMethods_i', 'img')
  33. thresholdType_i = cv2.getTrackbarPos('thresholdType_i', 'img')
  34. blockSize_i = cv2.getTrackbarPos('blockSize_i', 'img',)
  35. c_i = cv2.getTrackbarPos('c', 'img',)
  36. imgBin = cv2.adaptiveThreshold(imgGray2, 255, adaptiveMethods[adaptiveMethods_i],
  37. thresholdTypes[thresholdType_i], blockSizes[blockSize_i], cs[c_i], )
  38. if flag == 1: # 为了滑动一次,只显示一次滑动结果
  39. print(f'{adaptiveMethods_i:3d} {thresholdType_i:3d} {blockSizes[blockSize_i]:3d} {cs[c_i]}')
  40. flag = 0
  41. if cv2.waitKey(1) == ord('q'):
  42. break
  43. cv2.destroyAllWindows()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/322495
推荐阅读
相关标签
  

闽ICP备14008679号