首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中将NCHW转换为NHWC

在C++中将NCHW转换为NHWC
EN

Stack Overflow用户
提问于 2021-09-05 11:54:01
回答 2查看 715关注 0票数 0

OpenCV以NCHW格式读取图像(样本数x通道x高度x宽度),我需要将其转换为NHWC格式(将数组的第2维移到最后)。在C++中,是否有一种从NCHW到NHWC转换的有效方法?我可以用一个3 for循环来完成这个任务,但是很明显这根本没有效率。

EN

回答 2

Stack Overflow用户

发布于 2022-02-09 21:44:51

这个简单的解决方案适用于OpenCV C++:

代码语言:javascript
运行
复制
static void hwc_to_chw(cv::InputArray src, cv::OutputArray dst) {
  std::vector<cv::Mat> channels;
  cv::split(src, channels);

  // Stretch one-channel images to vector
  for (auto &img : channels) {
    img = img.reshape(1, 1);
  }

  // Concatenate three vectors to one
  cv::hconcat( channels, dst );
}
票数 0
EN

Stack Overflow用户

发布于 2022-09-26 07:57:37

使用OpenCV >= 4.6,您可以使用transposeND (来自opencv2/core.hpp)进行此类转换:

代码语言:javascript
运行
复制
std::vector<int> order = {0, 2, 3, 1};
Mat inp, out; // inp: NCHW, out: NHWC
transposeND(inp, order, out);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69063147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档