用c++ opencv实现numpy的repeat函数,是逐个元素复制repeats次的方法。
时间: 2023-11-28 16:48:07 浏览: 83
可以使用 OpenCV 中的 `repeat()` 函数来实现类似于 NumPy 中的 `repeat()` 函数,复制每个元素 `repeats` 次。具体实现步骤如下:
1. 创建一个 `cv::Mat` 类型的变量 `src`,存储原始数组数据。
2. 创建一个 `cv::Mat` 类型的变量 `dst`,存储重复后的数组数据。
3. 使用 `cv::repeat()` 函数将 `src` 中的每个元素重复 `repeats` 次,并将结果存储在 `dst` 中。
下面是一个示例代码:
```c++
#include <opencv2/core.hpp>
#include <iostream>
cv::Mat repeat(const cv::Mat& src, int repeats)
{
cv::Mat dst;
cv::repeat(src, 1, repeats, dst);
return dst;
}
int main()
{
// 创建一个大小为 2x3 的矩阵
cv::Mat src = (cv::Mat_<int>(2, 3) << 1, 2, 3, 4, 5, 6);
std::cout << "原始数组:\n" << src << std::endl;
// 将每个元素重复 3 次
cv::Mat dst = repeat(src, 3);
std::cout << "重复后数组:\n" << dst << std::endl;
return 0;
}
```
输出结果为:
```
原始数组:
[1, 2, 3;
4, 5, 6]
重复后数组:
[1, 1, 1, 2, 2, 2, 3, 3, 3;
4, 4, 4, 5, 5, 5, 6, 6, 6]
```
阅读全文