OpenCV之使用滑动条动态调整阈值 |
您所在的位置:网站首页 › opencv滚动条 › OpenCV之使用滑动条动态调整阈值 |
在做图像处理时,二值化是一个常规操作,阈值的选取很关键,为了调试方便,可以使用滑动条来动态调整阈值,观察二值化效果,用到的函数为cv2.createTrackbar和cv2.getTrackbarPos, 1 cv2.createTrackbar int createTrackbar(const string& trackbarname, const string&winname, int* value, int count ,TrackbarCallback onChange = 0, void* userdata = 0);参数含义 参数1:轨迹条名字 参数2:窗口名字 参数3:滑块初始位置 参数4:表示滑块达到最大位置的值 参数5:默认值为0,指向回调函数 参数6:默认值为0,用户传给回调函数的数据值 2 cv2.getTrackbarPos函数原型 int getTrackbarPos(const String& trackbarname, const String& winname)参数含义 trackbarname:轨迹条的名字。 winname:轨迹条所在窗口的名字。 3 示例代码示例代码实现了读入一张图片,转化为灰度图,读取滑动条的值设为二值化的阈值,观察二值化的效果 import cv2 import numpy as np def nothing(x): pass def mythreshold(image): #open image image_org = cv2.imread(image) #transe image to gray image_gray = cv2.cvtColor(image_org, cv2.COLOR_RGB2GRAY) cv2.namedWindow("image") cv2.createTrackbar("threshold", "image", 0, 255, nothing) while True: mythreshold = cv2.getTrackbarPos("threshold", "image") ret, image_bin = cv2.threshold(image_gray, mythreshold, 255, cv2.THRESH_BINARY) cv2.imshow("image",image_bin) if cv2.waitKey(10) & 0xFF == ord("q"): break cv2.destroyAllWindows() def main(): path = "shumaguan/2018-09-10_162811_106.jpg" mythreshold(path) if __name__ =='__main__': main() 4 效果演示如图所示为我对一个数码管图片进行二值化(不太会录屏,所以就放几张图片示意) 可以看到在拖动滑动条时阈值变化,二值化效果也产生变化,方便我们在调试时设置合适的阈值 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |