OpenCV基础——threshold函数的使用
图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出明显的黑白效果。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。OpenCV中提供了函数cv::threshold();
注意:作者采用OpenCV 3.0.0
函数原型
参数说明
src:源图像,可以为8位的灰度图,也可以为32位的彩色图像。(两者由区别)
dst:输出图像
thresh:阈值
maxval:dst图像中最大值
type:阈值类型,可以具体类型如下:
编号 | 阈值类型枚举 | 注意 |
1 | THRESH_BINARY |
|
2 | THRESH_BINARY_INV |
|
3 | THRESH_TRUNC |
|
4 | THRESH_TOZERO |
|
5 | THRESH_TOZERO_INV |
|
6 | THRESH_MASK | 不支持 |
7 | THRESH_OTSU | 不支持32位 |
8 | THRESH_TRIANGLE | 不支持32位 |
具体如下表
生成关系如下表
函数参考可以至http://docs.opencv.org/3.0.0/examples.html
测试代码
Mat gray; cvtColor(src, gray, CV_BGR2GRAY); // 全局二值化 int th = 100; cv::Mat threshold1,threshold2,threshold3,threshold4,threshold5,threshold6,threshold7,threshold8; cv::threshold(gray, threshold1, th, 255, THRESH_BINARY); cv::threshold(gray, threshold2, th, 255, THRESH_BINARY_INV); cv::threshold(gray, threshold3, th, 255, THRESH_TRUNC); cv::threshold(gray, threshold4, th, 255, THRESH_TOZERO); cv::threshold(gray, threshold5, th, 255, THRESH_TOZERO_INV); //cv::threshold(gray, threshold6, th, 255, THRESH_MASK); cv::threshold(gray, threshold7, th, 255, THRESH_OTSU); cv::threshold(gray, threshold8, th, 255, THRESH_TRIANGLE); cv::imshow("THRESH_BINARY", threshold1); cv::imshow("THRESH_BINARY_INV", threshold2); cv::imshow("THRESH_TRUNC", threshold3); cv::imshow("THRESH_TOZERO", threshold4); cv::imshow("THRESH_TOZERO_INV", threshold5); //cv::imshow("THRESH_MASK", threshold6); cv::imshow("THRESH_OTSU", threshold7); cv::imshow("THRESH_TRIANGLE", threshold8); cv::waitKey(0); |
测试结果
原图 | |
THRESH_BINARY | |
THRESH_BINARY_INV | |
THRESH_TRUNC | |
THRESH_TOZERO | |
THRESH_TOZERO_INV | |
THRESH_OTSU | |
THRESH_TRIANGLE | |
注意:
如果采用彩色图像进行计算会得到彩色效果,而不是预期的二值化结果
彩色源图 | 灰度源图 |
| |
相关文章
- opencv学习笔记(六)直方图比较图片相似度
- OpenCV中的带参数宏定义CV_Assert()的作用
- 关于最近利用Cmake编译OpenCV的一些心得体会
- 详解OpenCV的视频背景/前景分割(背景建模/前景提取)类cv::bgsegm::BackgroundSubtractorMOG,并利用它实现对道路监控视频前景/背景的提取
- OpenCV函数inRange()的作用及使用时的注意事项
- 利用OpenCV的函数warpAffine()做图像的仿射变换【实现图像的平移、缩放、旋转、翻转等操作】
- 实现图像旋转的MATLAB源码和OpenCV下的C/C++源码
- 边缘检测算子Canny原理概述并利用OpenCV的库函数Canny()对图像进行边缘检测
- C++、C++-OpenCV、Python、Python-Numpy、MATLAB的除法取余(余数)方法总结
- Python+Opencv识别两张相似图片
- OpenCV学习笔记之 ( 三 ) MFC显示Mat图片
- opencv----(1) mat最好用,和IplImage,cvmat 比较
- Ubuntu下OpenCV版本切换
- ubuntu下opencv的版本切换及遇到的问题解决
- Ubuntu 16.04 python和OpenCV安装
- OpenCV图像的基础叠加
- 全网最简单的安装opencv4.5+opencv_contrib-4.5.0的方法
- (原+修改)Pip使用国内源安装opencv