如何将 2D 垫子组合成 3D 垫子?
Posted
技术标签:
【中文标题】如何将 2D 垫子组合成 3D 垫子?【英文标题】:How to combines 2D mat into a 3D one? 【发布时间】:2015-11-25 15:34:31 【问题描述】:这是我的问题,我有 8 张 100*100 的垫子灰度图像, 我想将它们组合成一个 3d 矩阵,如 100*100*8;
这是我的代码:(8个垫子从img1
命名为img8
,大小相同为100*100,像素值为double
)
int sz[3] = img1.rows,img1.cols,8;
Mat m(3,sz, CV_8UC1, Scalar::all(0));
m.at<double>(m.rows,m.cols,1)=img1;
我认为这段代码可以将 img1 放入 3d 矩阵 100*100*8 的第一个平面,但随后出现错误:
该类型无法从 MAT 转换为 double。
我该如何解决这个问题?
【问题讨论】:
为什么需要这个 3d 图像? OpenCV 对 N 维图像的支持不是很好。您可以这样做,但使用起来并不容易。你确定std::vector<Mat1b>
还不够吗?
哇,你能告诉我如何使用 std::vector你必须先将double类型的矩阵转换成uchar矩阵,可以这样做:
cv::Mat img1u;
img1.convertTo(img1u);
m.at<double>(m.rows,m.cols,1)=img1u;
【讨论】:
以上是关于如何将 2D 垫子组合成 3D 垫子?的主要内容,如果未能解决你的问题,请参考以下文章