函数threshold对单通道数组应用固定阈值操作。该函数的典型应用是对灰度图进行阈值操作得到二值图像或者是去掉噪声。
固定阈值操作:Threshold()函数
#include<opencv2/core.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
Mat src=imread("1.jpg");
Mat src_gray,dst;
imshow("原图",src);
cvtColor(src,src_gray,COLOR_RGB2GRAY);
threshold(src_gray,dst,200,100,3);//200是阈值的具体值
imshow("效果图",dst);
waitKey(0);
return 0;
}
下面对 threshold(src_gray,dst,200,100,3);中的第五个参数进行解释:
有5种类型:
- THRESH_BINARY:将被阈值化的值和阈值---------------------0
- THRESH_BINARY_INV:二值化阈值-----------------------------1
- THRESH_TRUNC:反向二值阈值化并反转---------------------2
- THRESH_TOZERO:超过阈值被置为0---------------------------3
- THRESH_TOZERO_INV:低于阈值被置为0-----------------------4
其中,我们用的最多的就是第四和第五种类型
自适应阈值操作:adaptiveThreshold()函数
OpenCV提供的API:
void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue,
int adaptiveMethod, int thresholdType, int blockSize, double C)
说明下各参数:
-
InputArray src:源图像 -
OutputArray dst:输出图像,与源图像大小一致 -
double maxValue给像素赋的满足条件的非零值 -
int adaptiveMethod:在一个邻域内计算阈值所采用的算法,有两个取值,分别为ADAPTIVE_THRESH_MEAN_C和ADAPTIVE_THRESH_GAUSSIAN_C。
ADAPTIVE_THRESH_MEAN_C的计算方法是计算出领域的平均值再减去第七个参数double C的值。
ADAPTIVE_THRESH_GAUSSIAN_C的计算方法是计算出领域的高斯均值再减去第七个参数double C的值。 -
int thresholdType:这是阈值类型,只有两个取值,分别为THRESH_BINARY和THRESH_BINARY_INV。 -
int blockSize:adaptiveThreshold的计算单位是像素的邻域块,这是局部邻域大小,3、5、7等。 -
double C:这个参数实际上是一个偏移值调整量,用均值和高斯计算阈值后,再减或加这个值就是最终阈值。
#include<opencv2/core.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
Mat src=imread("1.jpg");
Mat src_gray,dst;
imshow("原图",src);
cvtColor(src,src_gray,COLOR_RGB2GRAY);
adaptiveThreshold(src_gray,dst,255,ADAPTIVE_THRESH_GAUSSIAN_C,0,3,1);
imshow("效果图",dst);
waitKey(0);
return 0;
}
本文介绍使用OpenCV库进行图像阈值处理的方法,包括固定阈值处理和自适应阈值处理。固定阈值处理通过设置特定阈值实现二值化,自适应阈值处理则根据局部区域动态调整阈值。
6666

被折叠的 条评论
为什么被折叠?



