图像处理四则运算c++
时间: 2024-10-24 22:01:01 浏览: 11
图像处理中的四则运算通常是指对图像像素值进行加、减、乘、除等基本数学运算。在C++中,可以使用开源库如OpenCV(计算机视觉库)来进行这样的操作。以下是一个简单的示例:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
cv::Mat performArithmetic(const cv::Mat& img, double factor, int operation = cv::add) {
cv::Mat result(img.size(), img.type());
if (operation == cv::add) {
cv::add(img, factor, result);
} else if (operation == cv::subtract) {
cv::subtract(img, factor, result);
} else if (operation == cv::multiply) {
cv::mul(img, factor, result);
} else if (operation == cv::divide) {
cv::div(img, factor, result, nullptr, cv::DIVISION_SCALE_INVERSE);
} else {
std::cerr << "Invalid operation!" << std::endl;
return result;
}
return result;
}
int main() {
// 加载图像
cv::Mat input = cv::imread("input.jpg", cv::IMREAD_COLOR);
// 对每个通道进行特定的运算
cv::Mat redChannel, greenChannel, blueChannel;
cv::split(input, {redChannel, greenChannel, blueChannel});
cv::Mat processedRed = performArithmetic(redChannel, 50, cv::add);
cv::Mat processedGreen = performArithmetic(greenChannel, 25, cv::subtract);
cv::Mat processedBlue = performArithmetic(blueChannel, 75, cv::multiply);
// 合并处理后的通道回原图
cv::merge({processedRed, processedGreen, processedBlue}, input);
// 保存结果
cv::imwrite("output.jpg", input);
return 0;
}
```
在这个例子中,`performArithmetic`函数接受一个图像矩阵(img)、一个因子(factor)以及一个操作符(operation),然后对图像的每个像素应用指定的运算。注意,在实际应用中,需要确保操作数和图像类型兼容。
阅读全文