用c++和opencv把一张图片的蓝色部分变为白色,并进行中值滤波操作
时间: 2024-02-28 21:56:57 浏览: 102
用VC++实现图像的中值滤波
以下是使用 C++ 和 OpenCV 将一张图片的蓝色部分变成白色,并进行中值滤波的代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main() {
Mat img = imread("test.jpg"); // 读取图片
if (img.empty()) {
std::cout << "Failed to load image!" << std::endl;
return -1;
}
Mat hsv;
cvtColor(img, hsv, COLOR_BGR2HSV); // 转换为 HSV 颜色空间
Mat mask;
inRange(hsv, Scalar(100, 50, 50), Scalar(130, 255, 255), mask); // 生成蓝色区域掩码
Mat result;
img.copyTo(result);
result.setTo(Scalar(255, 255, 255), mask); // 将蓝色部分变成白色
medianBlur(result, result, 5); // 中值滤波
imshow("Original Image", img);
imshow("Result Image", result);
waitKey();
return 0;
}
```
以上代码使用了 OpenCV 中的 `cvtColor` 函数将图片转换为HSV颜色空间,使用 `inRange` 函数生成蓝色区域的掩码,然后使用 `setTo` 函数将蓝色部分变成白色,最后使用 `medianBlur` 函数进行中值滤波。
阅读全文