OpenCV之使用滑动条动态调整阈值

您所在的位置:网站首页 opencv滚动条 OpenCV之使用滑动条动态调整阈值

OpenCV之使用滑动条动态调整阈值

2023-09-24 05:47| 来源: 网络整理| 查看: 265

在做图像处理时,二值化是一个常规操作,阈值的选取很关键,为了调试方便,可以使用滑动条来动态调整阈值,观察二值化效果,用到的函数为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