opencv 图像雾化C++
时间: 2023-09-14 09:11:31 浏览: 169
这里是一个简单的OpenCV图像雾化C++代码示例:
```
#include <opencv2/opencv.hpp>
#include <iostream>
#include <random>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 加载图像
Mat image = imread("test.jpg");
// 验证图像是否正确加载
if (image.empty())
{
cout << "Could not open or find the image" << endl;
return -1;
}
// 创建随机数生成器
default_random_engine generator;
uniform_int_distribution<int> distribution(-30, 30);
// 获取宽度和高度
int width = image.cols;
int height = image.rows;
// 循环遍历每个像素
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
// 获取像素的RGB值
Vec3b& pixel = image.at<Vec3b>(y, x);
int blue = pixel[0];
int green = pixel[1];
int red = pixel[2];
// 随机增加或减少颜色值
int offset = distribution(generator);
blue = blue + offset;
green = green + offset;
red = red + offset;
// 限制颜色值在0-255之间
if (blue < 0) blue = 0;
if (green < 0) green = 0;
if (red < 0) red = 0;
if (blue > 255) blue = 255;
if (green > 255) green = 255;
if (red > 255) red = 255;
// 更新像素的RGB值
pixel[0] = blue;
pixel[1] = green;
pixel[2] = red;
}
}
// 显示图像
imshow("Original Image", image);
waitKey(0);
return 0;
}
```
该代码将对每个像素的RGB值进行随机增加或减少,以创建图像雾化效果。随机数生成器使用C++11的默认随机数生成器和均匀分布函数。请注意,这只是一个简单的示例代码,可能需要进行更多的优化和改进才能获得更好的效果。
阅读全文