opencv C++ .apply()函数
时间: 2023-11-08 16:50:28 浏览: 125
2017版Learning OpenCV3
`cv::Mat::apply()` 函数是 OpenCV 中的一个函数,用于在矩阵的每个元素上应用一个自定义的函数。该函数接受一个函数对象作为参数,该函数对象将被应用于矩阵的每个元素。
这是 `cv::Mat::apply()` 函数的原型:
```cpp
cv::Mat cv::Mat::apply(std::function<void(const cv::Mat&)> operation) const;
```
其中,`operation` 是一个函数对象,其参数为当前元素的值。你可以在 `operation` 中实现自己的操作。
下面是一个示例,展示了如何使用 `cv::Mat::apply()` 函数将矩阵中的每个元素都加上一个常数:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
void addConstant(const cv::Mat& element)
{
// 加上一个常数
int constant = 10;
element += constant;
}
int main()
{
// 创建一个 3x3 的矩阵
cv::Mat matrix = (cv::Mat_<int>(3, 3) << 1, 2, 3, 4, 5, 6, 7, 8, 9);
// 打印原始矩阵
std::cout << "原始矩阵:" << std::endl;
std::cout << matrix << std::endl;
// 使用 apply 函数加上常数
matrix = matrix.apply(addConstant);
// 打印结果矩阵
std::cout << "结果矩阵:" << std::endl;
std::cout << matrix << std::endl;
return 0;
}
```
运行以上代码,输出应为:
```
原始矩阵:
[1, 2, 3;
4, 5, 6;
7, 8, 9]
结果矩阵:
[11, 12, 13;
14, 15, 16;
17, 18, 19]
```
在这个示例中,`addConstant` 函数将每个元素加上了常数值10,并且通过 `cv::Mat::apply()` 函数应用到了矩阵的每个元素上。最终得到了结果矩阵。
阅读全文