OpenCV图像处理篇之阈值操作函数
Last edited time
Sep 23, 2024 03:04 PM
AI summary
本文介绍了OpenCV中的五种阈值操作类型,包括二值化、反向二值化、截断、阈值为零和反向阈值为零,并提供了相应的C++代码示例。关键函数为
threshold
,用于执行阈值操作,程序中还使用了滑动条来动态调整阈值和类型,以便实时查看效果。Tags
Image Processing
Thresholding Techniques
OpenCV Tutorials
Last edited by
阈值操作类型
这5种阈值操作类型保留opencv tutorials中的英文名称,依次为:
- Threshold Binary:即二值化,将大于阈值的灰度值设为最大灰度值,小于阈值的值设为0。
- Threshold Binary, Inverted:将大于阈值的灰度值设为0,大于阈值的值设为最大灰度值。
- Truncate:将大于阈值的灰度值设为阈值,小于阈值的值保持不变。
- Threshold to Zero:将小于阈值的灰度值设为0,大于阈值的值保持不变。
- Threshold to Zero, Inverted:将大于阈值的灰度值设为0,小于阈值的值保持不变。
OpenCV提供了
threshold
函数专门用于阈值操作,其实实现起来很简单,为什么非得调用函数呢?一是熟悉了调用函数很方便,如果一行代码能搞定的事为什么非得用几个循环呢?二是对于新手,自己实现未必敢保证运行效率上未必能达到opencv那样好。程序分析
- 整个程序就一句话是关键:
threshold的参数依次是原灰度图、输出阈值操作后的图、阈值、最大灰度值以及阈值类型。其中,最大灰度值并不一定就是255,在上面提到的阈值操作1和2中提到,“设为最大灰度值”,如果你觉得不像让图像的最大灰度值大于200,那就设为200就好了。阈值类型取值为0~4,按顺序依次对应前面提到的5种阈值操作类型。
createTrackbar
是创建滑动条的gui函数。以createTrackbar("Value", wn, &th_val, max_val, Thresh);
为例,该滑动条值与变量th_val
的值关联,一旦th_val
改变,自动调用回调函数Thresh,createTrackbar
使用的回调函数格式必需是程序中的void Thresh(int, void *)
,即返回void,参数含int
和void *
类型。
效果


林依晨的的图片被我P一下就成那样了!上面的第二幅图片使用的是阈值操作2。


这回是未知美女一枚,使用阈值操作方法3后的结果如右图,感觉没什么差别,有木有?确实差别不大,谁叫人家头发本来就那么黑那么靓丽呢!细看还是能看出来眉毛变细了,发丝变黑了。
Loading...