У меня есть 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);
}
Но я не уверен, является ли он самым коротким, или эффективно ли разделение / объединение.