固定阈值
OpenCV 中提供了阈值化函数 threshold,该函数有 5 种阈值化类型参数:
- THRESH_BINARY 二进制阈值化
将灰度值大于 thresh 的设置为 maxval,不大于 thresh 设置为 0
- THRESH_BINARY_INV 反二进制阈值化
将灰度值大于 thresh 的设置为 0,不大于 thresh 设置为 maxval
- THRESH_TRUNC 截断阈值化
将灰度值大于 thresh 的设置为 threshold,不大于 thresh 的灰度值不变
- THRESH_TOZERO 阈值化为 0
将灰度值大于 thresh 的不变,不大于 thresh 的灰度值设置为 0
- THRESH_TOZERO_INV 反阈值化为 0
将灰度值大于 thresh 的不变,不大于 thresh 的灰度值设置为 0
阈值化前需先转化为单通道图
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char const *argv[])
{
Mat image = imread("1.jpg"), gray, out;
cvtColor(image, gray, COLOR_RGB2GRAY);
imshow("原图", image);
// 创建滑块
namedWindow("效果");
createTrackbar("类型", "效果", 0, 5, 0);
createTrackbar("阈值", "效果", 0, 255, 0);
while(waitKey(100) != 27) {
int value = getTrackbarPos("阈值", "效果");
int type = getTrackbarPos("类型", "效果");
threshold(gray, out, value, 255, type);
imshow("效果", out);
}
return 0;
}


网友评论