void checkSameSizeAndDepth(InputArrayOfArrays src, Size &sz, int &depth) { CV_Assert(src.isMat() || src.isUMat() || src.isMatVector() || src.isUMatVector()); if (src.isMat() || src.isUMat()) { CV_Assert(!src.empty()); sz = src.size(); depth = src.depth(); } else if (src.isMatVector()) { const vector<Mat>& srcv = *static_cast<const vector<Mat>*>(src.getObj()); CV_Assert(srcv.size() > 0); for (unsigned i = 0; i < srcv.size(); i++) { CV_Assert(srcv[i].depth() == srcv[0].depth()); CV_Assert(srcv[i].size() == srcv[0].size()); } sz = srcv[0].size(); depth = srcv[0].depth(); } else if (src.isUMatVector()) { const vector<UMat>& srcv = *static_cast<const vector<UMat>*>(src.getObj()); CV_Assert(srcv.size() > 0); for (unsigned i = 0; i < srcv.size(); i++) { CV_Assert(srcv[i].depth() == srcv[0].depth()); CV_Assert(srcv[i].size() == srcv[0].size()); } sz = srcv[0].size(); depth = srcv[0].depth(); } }
int getTotalNumberOfChannels(InputArrayOfArrays src) { CV_Assert(src.isMat() || src.isUMat() || src.isMatVector() || src.isUMatVector()); if (src.isMat() || src.isUMat()) { return src.channels(); } else if (src.isMatVector()) { int cnNum = 0; const vector<Mat>& srcv = *static_cast<const vector<Mat>*>(src.getObj()); for (unsigned i = 0; i < srcv.size(); i++) cnNum += srcv[i].channels(); return cnNum; } else if (src.isUMatVector()) { int cnNum = 0; const vector<UMat>& srcv = *static_cast<const vector<UMat>*>(src.getObj()); for (unsigned i = 0; i < srcv.size(); i++) cnNum += srcv[i].channels(); return cnNum; } else { return 0; } }