用习惯了matlab和python,它们对于三维切片非常方便。最近想用C++的Mat实现三维切片(刚学太菜了),在网上查阅了许久,都没找到方法。最后在opencv的英文论坛上找到方法,记录一下。附带链接Slicing 3D array into 2D arrays - OpenCV
// 创建三维矩阵
int samples_size[3];
samples_size[0] = 5;
samples_size[1] = 10;
samples_size[2] = 10;
Mat m_3 = cv::Mat::zeros(3, samples_size, CV_8UC1);
// 切片
Range ranges[] = {Range(0, 1), Range::all(), Range::all()};
Mat m_2(m_3, ranges);
m_2 = Mat(Size(10, 10), CV_8UC1, m_2.data);