首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++ OpenCV转置/置换图像轴

C++ OpenCV转置/置换图像轴
EN

Stack Overflow用户
提问于 2022-06-01 12:48:20
回答 1查看 815关注 0票数 3

我很难用C++编写这行python代码:

Python:

代码语言:javascript
复制
frame_nn = cv2.cvtColor(padded, cv2.COLOR_BGR2RGB).transpose(2,0,1).astype(np.float32)[None,]

我已经得到的:

代码语言:javascript
复制
cv::cvtColor(image_pd, image_pd, cv::COLOR_BGR2RGB);
image_pd.convertTo(image_f, CV_32F);

如何在C++中转换三维最大/图像?基本上,image = numpy.transpose(image, (2, 0, 1))在C++中的等效性是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-06-01 16:01:25

若要从HWC转换为CHW通道命令,可以使用此命令(从blobFromImage())窃取)。

代码语言:javascript
复制
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开始编辑,也可以使用transposeND()

代码语言:javascript
复制
Mat src=...
Mat dst;
transposeND(src, {2,0,1}, dst);
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72462193

复制
相关文章

相似问题

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