写一段纯数组实chw转hwc的c++代码
时间: 2023-08-03 10:06:37 浏览: 169
用c++实现hough变换
3星 · 编辑精心推荐
当然,以下是一个简单的 C++ 代码示例,用于实现从 CHW(Channel-Height-Width)到 HWC(Height-Width-Channel)的数组转换:
```cpp
#include <iostream>
#include <vector>
// 定义一个简单的尺寸结构体
struct Size {
int channels;
int height;
int width;
};
std::vector<float> chw_to_hwc(const std::vector<float>& chw_data, const Size& size) {
std::vector<float> hwc_data(size.channels * size.height * size.width);
for (int c = 0; c < size.channels; ++c) {
for (int h = 0; h < size.height; ++h) {
for (int w = 0; w < size.width; ++w) {
int chw_index = c * size.height * size.width + h * size.width + w;
int hwc_index = h * size.width * size.channels + w * size.channels + c;
hwc_data[hwc_index] = chw_data[chw_index];
}
}
}
return hwc_data;
}
int main() {
// 示例输入数据
std::vector<float> chw_data = {1, 2, 3, 4, 5, 6};
Size size = {2, 1, 3}; // channels=2, height=1, width=3
// 转换并打印结果
std::vector<float> hwc_data = chw_to_hwc(chw_data, size);
for (float value : hwc_data) {
std::cout << value << " ";
}
return 0;
}
```
这段代码中,`chw_to_hwc` 函数接受一个 CHW 格式的数组和尺寸信息,并返回对应的 HWC 格式的数组。算法使用嵌套的循环遍历原始数组,并根据索引关系将值复制到新的数组中。在 `main` 函数中,我们提供了一个示例输入和尺寸,并打印出转换后的结果。请根据实际需求调整输入数据和尺寸。
阅读全文