c++opencv去除图像中大于阈值的像素
时间: 2024-02-11 12:04:05 浏览: 68
opencv提取轮廓大于某个阈值的图像
你可以使用cv::threshold函数来实现这个功能。具体步骤如下:
1. 读入原始图像并转换为灰度图像。
```c++
cv::Mat srcImg = cv::imread("input.png");
cv::Mat grayImg;
cv::cvtColor(srcImg, grayImg, cv::COLOR_BGR2GRAY);
```
2. 设定阈值,并使用cv::threshold函数将图像二值化。
```c++
int thresholdValue = 128; // 阈值设为128
cv::Mat binaryImg;
cv::threshold(grayImg, binaryImg, thresholdValue, 255, cv::THRESH_BINARY);
```
3. 遍历二值化后的图像,将大于阈值的像素值设为0。
```c++
int thresholdValue = 128; // 阈值设为128
for (int i = 0; i < binaryImg.rows; ++i)
{
for (int j = 0; j < binaryImg.cols; ++j)
{
if (binaryImg.at<uchar>(i, j) > thresholdValue)
{
binaryImg.at<uchar>(i, j) = 0;
}
}
}
```
4. 显示处理后的图像。
```c++
cv::imshow("output", binaryImg);
cv::waitKey(0);
```
注意:上述代码仅作为示例,实际应用中需要根据具体情况进行修改。
阅读全文