要从 HWC 转换为 CHW 通道顺序,您可以使用它(从blobFromImage())
:
int siz[] = {3, img.rows, img.cols};
Mat chw(3, siz, CV_8U);
vector<Mat> planes = {
Mat(img.rows, img.cols, CV_8U, img.ptr(0)), // swap 0 and 2 and you can avoid the bgr->rgb conversion !
Mat(img.rows, img.cols, CV_8U, img.ptr(1)),
Mat(img.rows, img.cols, CV_8U, img.ptr(2))
};
split(img, planes);
chw.convertTo(chw, CV_32F);
[编辑]
从4.6.0开始,您还可以使用转置ND() https://docs.opencv.org/4.x/d2/de8/group__core__array.html#gab1b1274b4a563be34cdfa55b8919a4ec
Mat src=...
Mat dst;
transposeND(src, {2,0,1}, dst);