这是我的问题,我有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。
我该如何解决这个问题?
答案 0 :(得分:-1)
首先必须将双类型matirces转换为uchar矩阵,可以按如下方式进行:
cv::Mat img1u;
img1.convertTo(img1u);
m.at<double>(m.rows,m.cols,1)=img1u;