::返回OpenCV算子速查表
cv::threshold
- 1. 函数定义
- 2. 例程
1. 函数定义
复制代码
1
2
3
4
5
6
7
8double threshold( InputArray src, OutputArray dst, double thresh, //阈值 double maxval, //给定的最大值 int type //操作类型 );
- 《学习OpenCV3》的说明
阈值类型 | 操作 |
---|---|
cv::THRESH_BINARY | DST=(SRC>thresh)?MAXVALUE:0 |
cv::THRESH_BINARY_INV | DST=(SRC>thresh)?0:MAXVALUE |
cv::THRESH_TRUNC | DST=(SRC>thresh)?THRESH:SRC |
cv::THRESH_TOZERO | DST=(SRC>thresh)?SRC:0 |
cv::THRESH_TOZERO_INV | DST=(SRC>thresh)?0:SRC |
- OpenCV官方文档的说明
https://docs.opencv.org/4.5.4/d7/d1b/group__imgproc__misc.html#gaa9e58d2860d4afa658ef70a9b1115576
- 特殊值THRESH_OTSU或THRESH_TRIANGLE可以与上述值之一组合使用。在这些情况下,函数使用Otsu或Triangle算法确定最佳阈值,并使用它而不是指定的阈值。
2. 例程
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64#include "stdafx.h" #include <opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main() { //命名窗口 namedWindow("电芯", WINDOW_NORMAL); namedWindow("THRESH_BINARY", WINDOW_NORMAL); namedWindow("THRESH_BINARY_INV", WINDOW_NORMAL); namedWindow("THRESH_TRUNC", WINDOW_NORMAL); namedWindow("THRESH_TOZERO", WINDOW_NORMAL); namedWindow("THRESH_TOZERO_INV", WINDOW_NORMAL); //namedWindow("THRESH_MASK", WINDOW_NORMAL); //不支持 官方文档也找不到它的解释 //特殊值THRESH_OTSU或THRESH_TRIANGLE可以与上述值之一组合使用。 //在这些情况下,函数使用Otsu或Triangle算法确定最佳阈值,并使用它而不是指定的阈值。 namedWindow("THRESH_OTSU", WINDOW_NORMAL); namedWindow("THRESH_TRIANGLE", WINDOW_NORMAL); //定义图像变量 Mat m_ImgCell = imread("./1.bmp", IMREAD_GRAYSCALE); Mat m_ImgThreshBinary; Mat m_ImgThreshBinaryInv; Mat m_ImgThreshTrunc; Mat m_ImgThreshToZero; Mat m_ImgThreshToZeroInv; //Mat m_ImgThreshMask; Mat m_ImgThreshOtsu; Mat m_ImgThreshTriangle; //设置阈值和最大值 double m_dbThresh = 150; double m_dbMaxValue = 255; //阈值化操作 threshold(m_ImgCell, m_ImgThreshBinary, m_dbThresh, m_dbMaxValue, THRESH_BINARY); threshold(m_ImgCell, m_ImgThreshBinaryInv, m_dbThresh, m_dbMaxValue, THRESH_BINARY_INV); threshold(m_ImgCell, m_ImgThreshTrunc, m_dbThresh, m_dbMaxValue, THRESH_TRUNC); threshold(m_ImgCell, m_ImgThreshToZero, m_dbThresh - 70, m_dbMaxValue, THRESH_TOZERO); threshold(m_ImgCell, m_ImgThreshToZeroInv, m_dbThresh - 70, m_dbMaxValue, THRESH_TOZERO_INV); //threshold(m_ImgCell, m_ImgThreshMask, m_dbThresh, m_dbMaxValue, THRESH_MASK); //以下这两种自己设置的阈值不再起作用,而真正起作用的阈值会作为返回值返回 double m_dbOtsuThresh = threshold(m_ImgCell, m_ImgThreshOtsu, 0, m_dbMaxValue, THRESH_BINARY | THRESH_OTSU); double m_dbTriangleThresh = threshold(m_ImgCell, m_ImgThreshTriangle, 0, m_dbMaxValue, THRESH_BINARY | THRESH_TRIANGLE); //显示图像 imshow("电芯", m_ImgCell); imshow("THRESH_BINARY", m_ImgThreshBinary); imshow("THRESH_BINARY_INV", m_ImgThreshBinaryInv); imshow("THRESH_TRUNC", m_ImgThreshTrunc); imshow("THRESH_TOZERO", m_ImgThreshToZero); imshow("THRESH_TOZERO_INV", m_ImgThreshToZeroInv); //imshow("THRESH_MASK", m_ImgThreshMask); imshow("THRESH_OTSU", m_ImgThreshOtsu); imshow("THRESH_TRIANGLE", m_ImgThreshTriangle); cout << m_dbOtsuThresh << endl; cout << m_dbTriangleThresh << endl; waitKey(0); return 0; }
最后
以上就是欢喜皮卡丘最近收集整理的关于OpenCV threshold 二值化1. 函数定义2. 例程的全部内容,更多相关OpenCV内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复