opencv中经常会涉及到将读取到的图像进行转置的操作,例如NHWC转换成NCHW的排布方式,下面就是C++版本的NHWC转NCHW的代码:
static void hwc_to_chw(cv::InputArray src, cv::OutputArray dst) {
std::vector<cv::Mat> channels;
cv::split(src, channels);
for (auto &img : channels) {
img = img.reshape(1, 1);
}
cv::hconcat( channels, dst );
}
使用方法,例如,图像先经过处理后需要转换成chw排布,代码如下:
cv::Mat chw_tensor;
cv::Mat input_tensor = PreProcess(frame, InputHeight, InputWidth);
hwc_to_chw(input_tensor, chw_tensor);