niblack二值化算法的c++代码
时间: 2023-10-12 19:53:10 浏览: 56
以下是一个使用Niblack二值化算法的简单C++代码示例:
```cpp
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
Mat niblackThreshold(const Mat& src, int windowSize, double k) {
Mat gray, mean, stddev, thresholded;
cvtColor(src, gray, COLOR_BGR2GRAY);
// 计算局部均值和标准差
boxFilter(gray, mean, CV_32F, Size(windowSize, windowSize), Point(-1,-1), true);
boxFilter(gray.mul(gray), stddev, CV_32F, Size(windowSize, windowSize), Point(-1,-1), true);
stddev = sqrt(stddev - mean.mul(mean));
// 应用Niblack算法进行二值化
thresholded = gray.clone();
thresholded.setTo(255, gray > mean + k * stddev);
return thresholded;
}
int main() {
// 读取图像
Mat image = imread("input.jpg");
if (image.empty()) {
std::cout << "无法读取图像!" << std::endl;
return -1;
}
// Niblack二值化
Mat thresholded = niblackThreshold(image, 15, -0.2);
// 显示结果
imshow("原始图像", image);
imshow("Niblack二值化结果", thresholded);
waitKey(0);
return 0;
}
```
请注意,这个示例使用了OpenCV库来处理图像。您需要安装OpenCV并将其链接到您的项目中才能编译和运行此代码。另外,代码中的`input.jpg`是一个示例输入图像,请根据您的实际情况更改文件路径和参数值。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)