··数据预处理——二值化 C++实现及案例
时间: 2023-12-11 22:03:05 浏览: 96
C++实现数据处理
二值化是一种常见的图像处理方法,它将灰度图像转换为黑白图像。二值化方法可以根据不同的应用场景进行选择,例如简单阈值二值化、自适应阈值二值化等等。在这里,我们介绍一下简单阈值二值化的C++实现及案例。
简单阈值二值化的思路是将灰度图像中灰度值小于一个固定阈值的像素设置为黑色(0),其他像素设置为白色(255)。阈值的选择可以根据实际应用进行调整。
下面是C++代码实现:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
// 读取图像
Mat src = imread("test.jpg", IMREAD_GRAYSCALE);
// 阈值二值化
Mat dst;
threshold(src, dst, 100, 255, THRESH_BINARY);
// 显示图像
imshow("src", src);
imshow("dst", dst);
waitKey(0);
return 0;
}
```
在上述代码中,使用了OpenCV库进行图像处理。首先,读取了一张灰度图像。然后,使用threshold函数进行阈值二值化处理。函数中的参数含义为:src为输入图像,dst为输出图像,100为阈值,255为超过阈值的像素值,THRESH_BINARY表示二值化处理。
下面是一个简单的案例,将一张彩色图像进行简单阈值二值化处理:
![原图](https://img-blog.csdn.net/20180421210435613?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh1amluZ19jb25fYmxvZy5wbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75)
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
// 读取图像
Mat src = imread("test.jpg");
// 灰度化
Mat gray;
cvtColor(src, gray, COLOR_BGR2GRAY);
// 阈值二值化
Mat dst;
threshold(gray, dst, 100, 255, THRESH_BINARY);
// 显示图像
imshow("src", src);
imshow("dst", dst);
waitKey(0);
return 0;
}
```
运行结果如下:
![结果](https://img-blog.csdn.net/20180421210501646?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh1amluZ19jb25fYmxvZy5wbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75)
从结果可以看出,在简单阈值二值化处理后,图像变成了黑白二值图像。
阅读全文