Самый эффективный способ фиксировать значения в OpenCv Mat

У меня есть 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);   
}

Но я не уверен, является ли он кратчайшим или эффективно ли разделение / слияние.

7
задан Amro 18 August 2013 в 08:45
поделиться