我将使用C++中的OpenCV来创建一个多维矩阵(用作累加器)覆盖在图像上。
我通过以下方式创建3D累加器:
const int accumSize[] = {sx, sy, sr};
cv::Mat accum(3, accumSize, CV_64F, cv::Scalar::all(0));
我需要从这个累加器中提取一个n*n*n的ROI,以便使用cv :: minMaxIdx获取每个ROI内的最大值。
由于这是3d的,通常使用cv :: Rect获取ROI的方法不起作用。以下方法也不行:
accum(cv::Range(x1,x2), cv::Range(y1,y2), cv::Range(r1,r2));
有人知道如何轻松获取3D子矩阵而无需显式分配并逐个复制元素吗?
Rect(x,y,w,h)
,那么前两个维度的范围必须按顺序排列:{Range(y, y+h), Range(x, x+w), ...}
- ferrouswheel