下面直接贴代码
//灰度的阈值变换,实现opencv的threshold函数#include<opencv2/opencv.hpp>#include<iostream>#include<cassert>namespace mycv { enum ThresholdType { //详情参考https://docs.opencv.org/3.4.3/d7/d1b/group__imgproc__misc.html#gaa9e58d2860d4afa658ef70a9b1115576 THRESH_BINARY = 0, THRESH_BINARY_INV = 1, THRESH_TRUNC = 2, THRESH_TOZERO = 3, THRESH_TOZERO_INV = 4 }; void threshold(cv::Mat& input, cv::Mat& output, const uchar thresh = 128, const uchar max_val = 255, int type = 0); }//mycvint main(){ cv::Mat img = cv::imread("lena.jpg", 0); if (img.empty()) return -1; cv::Mat dst; mycv::threshold(img, dst); cv::imwrite("dst.bmp", dst); cv::imshow("img", img); cv::imshow("dst", dst); cv::waitKey(0); return 0; }void mycv::threshold(cv::Mat& input, cv::Mat& output, const uchar thresh, const uchar max_val, int type) { assert(1 == input.channels()); output = input.clone(); const int rows = input.rows;//行 const int cols = input.cols;//列 switch (type)//五种操作方式 { case 0: for(int i = 0; i < rows; ++i) for (int j = 0; j < cols; ++j) { //THRESH_BINARY if (input.at<uchar>(i, j) > thresh) output.at<uchar>(i, j) = max_val; else output.at<uchar>(i, j) = 0; } break; case 1: for (int i = 0; i < rows; ++i) for (int j = 0; j < cols; ++j) { //THRESH_BINARY_INV if (input.at<uchar>(i, j) < thresh) output.at<uchar>(i, j) = max_val; else output.at<uchar>(i, j) = 0; } break; case 2: for (int i = 0; i < rows; ++i) for (int j = 0; j < cols; ++j) { //THRESH_TRUNC if (input.at<uchar>(i, j) > thresh) output.at<uchar>(i, j) = thresh; else output.at<uchar>(i, j) = input.at<uchar>(i, j); } break; case 3: for (int i = 0; i < rows; ++i) for (int j = 0; j < cols; ++j) { //THRESH_TOZERO if (input.at<uchar>(i, j) < thresh) output.at<uchar>(i, j) = input.at<uchar>(i, j); else output.at<uchar>(i, j) = 0; } break; case 4: for (int i = 0; i < rows; ++i) for (int j = 0; j < cols; ++j) { //THRESH_TOZERO_INV if (input.at<uchar>(i, j) > thresh) output.at<uchar>(i, j) = input.at<uchar>(i, j); else output.at<uchar>(i, j) = 0; } break; default: assert(false); } }//threshold
作者:芒果浩明
链接:https://www.jianshu.com/p/313fd08dfc12
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦