赞
踩
- double cv::threshold(
- InputArray src,
- OutputArray dst,
- double thresh,
- double maxval,
- int type
- )
threshold()将固定阈值应用于多通道图像阵列,通常用于从灰度图像中获得二值图像或用于去除噪声,即滤除值过小或过大的像素。该函数支持几种类型的阈值设置,它们由类型参数决定。
src:输入数组(多通道,8位或32位浮点数)
dst:输出数组(与src的尺寸、类型、通道数相同)
thresh:阈值
maxval:最大值
type:阈值类型
如果使用Otsu或Triangle方法,将返回计算出的阈值。
THRESH_BINARY(二值化阈值处理):
THRESH_BINARY_INV(反二值化阈值处理):
THRESH_TRUNC(截断阈值处理):
THRESH_TOZERO(截断为零阈值处理):
THRESH_TOZERO_INV(反截断为零阈值处理):
(上述回答来自ChatGPT)
特殊值THRESH_OTSU或THRESH_TRIANGLE可以与上述值中的一个组合。在这些情况下,函数使用Otsu's或Triangle算法确定最佳阈值,并使用它而不是指定的阈值。
THRESH_OTSU与THRESH_TRIANGLE分别使用Otsu和Triangle算法选择最佳阈值。
- #include <opencv2/opencv.hpp>
- #include <iostream>
-
- using namespace std;
- using namespace cv;
-
- int main(int argc, char* argv[])
- {
- Mat img = imread("path");
- Mat gray;
-
- cvtColor(img, gray, COLOR_BGR2GRAY);
-
- Mat imgB, imgBInv, imgTrunc, imgTZ, imgTZInv;
-
- // 也可进行彩色图像的阈值化
- threshold(gray, imgTrunc, 125, 255, THRESH_TRUNC);
- threshold(gray, imgB, 125, 255, THRESH_BINARY);
- threshold(gray, imgBInv, 125, 255, THRESH_BINARY_INV);
- threshold(gray, imgTrunc, 125, 255, THRESH_TRUNC);
- threshold(gray, imgTZ, 125, 255, THRESH_TOZERO);
- threshold(gray, imgTZInv, 125, 255, THRESH_TOZERO_INV);
-
- // 使用Otsu算法
- // threshold(gray, imgB, 125, 255, THRESH_BINARY | THRESH_OTSU);
-
- imshow("gray", gray);
- imshow("imgTrunc", imgTrunc);
- imshow("imgB", imgB);
- imshow("imgBInv", imgBInv);
- imshow("imgTZ", imgTZ);
- imshow("imgTZInv", imgTZInv);
-
- waitKey(0);
- }

- void cv::adaptiveThreshold (
- InputArray src,
- OutputArray dst,
- double maxValue,
- int adaptiveMethod,
- int thresholdType,
- int blockSize,
- double C
- )
对图像阵列应用自适应阈值,该函数根据公式将灰度图像变换为二值图像:
其中T(x,y)是针对每个像素单独计算的阈值。
src:八位单通道图像
dst:与src尺寸和类型相同的目标图像
maxValue:赋给满足条件的像素的非零值
adaptiveMethod:使用的自适应阈值算法
thresholdType:阈值类型,必须为THRESH_BINARY或THRESH_BINARY_INV
blockSize:用于计算像素阈值的像素邻域大小:3,5,7......
C:从平均值或加权平均值中减去的常数。通常,它是正的。
- #include <opencv2/opencv.hpp>
- #include <iostream>
-
- using namespace std;
- using namespace cv;
-
- int main(int argc, char* argv[])
- {
- Mat img = imread("path");
- Mat gray;
-
- cvtColor(img, gray, COLOR_BGR2GRAY);
-
- Mat imgB, imgMean, imgGaussian;
-
- threshold(gray, imgB, 125, 255, THRESH_BINARY);
- // adaptiveThreshold() 只能接受灰度图像
- adaptiveThreshold(gray, imgMean, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 7, 0);
- adaptiveThreshold(gray, imgGaussian, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 7, 0);
-
- imshow("gray", gray);
- imshow("imgB", imgB);
- imshow("imgMean", imgMean);
- imshow("imgGaussian", imgGaussian);
-
- waitKey(0);
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。