c++ opencv 图片批量更改像素
时间: 2023-07-07 11:30:20 浏览: 126
您可以使用OpenCV的Mat类来读取、修改和保存图像。下面是一个示例代码,演示如何批量更改图片的像素:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
#include <string>
using namespace cv;
using namespace std;
int main()
{
// 获取所有需要更改像素的图片路径
vector<string> img_paths = {"img1.jpg", "img2.jpg", "img3.jpg"};
// 遍历每张图片
for (const auto& img_path : img_paths) {
// 读取图片
Mat img = imread(img_path);
// 更改像素
for (int i = 0; i < img.rows; ++i) {
for (int j = 0; j < img.cols; ++j) {
img.at<Vec3b>(i, j)[0] = 255 - img.at<Vec3b>(i, j)[0];
img.at<Vec3b>(i, j)[1] = 255 - img.at<Vec3b>(i, j)[1];
img.at<Vec3b>(i, j)[2] = 255 - img.at<Vec3b>(i, j)[2];
}
}
// 保存图片
imwrite(img_path, img);
}
return 0;
}
```
在上述代码中,我们首先定义了需要更改像素的图片路径列表。然后,遍历每张图片,依次读取、修改和保存。在修改像素时,我们使用了Mat类的at方法获取每个像素的值,并将其取反。
请注意,上述代码仅仅是演示如何批量更改图片的像素,实际应用中可能需要根据具体需求进行调整。
阅读全文