opencv怎么二值化一副图像用c++
时间: 2024-10-13 19:02:39 浏览: 33
在OpenCV中,二值化操作通常是将一幅灰度图像转换为只有黑和白两种颜色的简化版本,用于提取图像中的边缘、形状等特征。以下是使用C++和OpenCV库进行二值化的简单步骤:
```cpp
#include <opencv2/opencv.hpp>
// 加载图像
cv::Mat img = cv::imread("input.jpg", cv::IMREAD_GRAYSCALE); // 读取灰度图像
// 确保图像已加载成功
if (img.empty()) {
std::cout << "Failed to load image" << std::endl;
return;
}
// 定义阈值范围(这里假设是0-255之间的黑白分明)
int threshold_value = 127; // 你可以根据需要调整这个值
cv::threshold(img, img, threshold_value, 255, cv::THRESH_BINARY); // THRESH_BINARY表示二值化
// 检查是否成功二值化
if (img.channels() != 1) {
std::cout << "Binary image not created successfully." << std::endl;
} else {
std::cout << "Image has been binarized using a threshold of " << threshold_value << std::endl;
}
// 显示原图和处理后的二值图
cv::imshow("Original Image", img);
cv::imshow("Binarized Image", img > 0); // 使用大于零的操作符进行展示,非零像素显示白色
cv::waitKey(0); // 等待用户按键关闭窗口
```
在这个例子中,`cv::threshold()`函数用于实际的二值化操作,它接受输入图像、目标图像、阈值、最大值以及阈值类型作为参数。
阅读全文