【发布时间】:2019-05-27 04:52:01
【问题描述】:
我想知道如何在 C++ 中将存储为 1D std::vector<float> 的图像从 CHW 格式(通道、高度、宽度)转换为 HWC 格式(高度、宽度、通道)。由于神经网络的要求,需要更改格式。
我使用 OpenCV 读取并显示如下图像:
cv::namedWindow("Screenshot", cv::WINDOW_AUTOSIZE );
cv::imshow("Screenshot", rgbImage);
然后我将cv::MatrgbImage转换为CHW格式的一维std::vector<float>:
size_t channels = 3;
std::vector<float> data(channels*ROS_IMAGE_HEIGHT*ROS_IMAGE_WIDTH);
for(size_t j=0; j<ROS_IMAGE_HEIGHT; j++){
for(size_t k=0; k<ROS_IMAGE_WIDTH; k++){
cv::Vec3b intensity = rgbImage.at<cv::Vec3b>(j, k);
for(size_t i=0; i<channels; i++){
data[i*ROS_IMAGE_HEIGHT*ROS_IMAGE_WIDTH + j*ROS_IMAGE_HEIGHT + k] = (float) intensity[i];
}
}
}
现在我想将std::vector<float>数据的格式转换为HWC。我该怎么做?
【问题讨论】:
-
问题实际上与
machine-learningofdeep-learning无关 - 请不要向标签发送垃圾邮件(已删除)。 -
CHW,HWC wut?请说清楚,而不是用难以理解的首字母缩写词和流行语谜语说话。
-
没有什么能像几个 TLA 那样散布混乱。
-
你知道如何读写二进制文件吗?如果没有,你应该学习如何这样做。这个网站是针对特定的编程问题,而不是代码编写请求。
-
我编辑了我的问题并为我的问题提供了更多详细信息
标签: c++ image opencv vector computer-vision