У меня есть OpenCv Mat
, который я собираюсь использовать для попиксельного переназначения, называемого remap
, который имеет CV_32FC2
элементов.
Некоторые из этих элементов могут находиться за пределами разрешенного диапазона для переназначения. Поэтому мне нужно зажать их между Point2f (0, 0)
и Point2f (w, h)
. Каков самый короткий или наиболее эффективный способ сделать это с помощью OpenCv 2.x?
Вот одно решение:
void clamp(Mat& mat, Point2f lowerBound, Point2f upperBound) {
vector<Mat> matc;
split(mat, matc);
min(max(matc[0], lowerBound.x), upperBound.x, matc[0]);
min(max(matc[1], lowerBound.y), upperBound.y, matc[1]);
merge(matc, mat);
}
Но я не уверен, является ли он кратчайшим или эффективно ли разделение / слияние.