c++,opencv生成随机灰度图像
时间: 2023-08-17 21:58:34 浏览: 136
要在C++中使用OpenCV生成随机灰度图像,您可以使用`cv::randu`函数来生成随机像素值,并将其存储在`cv::Mat`对象中。下面是一个示例代码:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
#include <random>
int main() {
int width = 640; // 图像宽度
int height = 480; // 图像高度
cv::Mat image(height, width, CV_8UC1); // 8位灰度图像
// 使用随机数生成器生成随机灰度值
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(0, 255);
for (int row = 0; row < height; row++) {
for (int col = 0; col < width; col++) {
image.at<uchar>(row, col) = dis(gen);
}
}
// 保存随机灰度图像
cv::imwrite("random_image.jpg", image);
return 0;
}
```
在上面的代码中,我们创建一个指定宽度和高度的`cv::Mat`对象,类型为`CV_8UC1`,表示8位灰度图像。然后,我们使用C++标准库中的随机数生成器来生成0到255之间的随机整数。通过嵌套循环遍历图像的每个像素,并将随机灰度值赋给每个像素。最后,我们使用`cv::imwrite`函数保存生成的随机灰度图像。
请注意,上述代码生成的是随机灰度图像。如果您想生成彩色图像,请使用`CV_8UC3`类型的`cv::Mat`对象,并在每个通道上分别生成随机像素值。
阅读全文