10

要素を含む、Matピクセルごとの再マッピングに使用するOpenCvがあります。remapCV_32FC2

これらの要素の一部は、リマップで許可されている範囲外にある可能性があります。だから私はそれらをとの間でクランプする必要がPoint2f(0, 0)ありPoint2f(w, h)ます。OpenCv 2.xでこれを達成するための最短または最も効率的な方法は何ですか?

これが1つの解決策です:

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);   
}

しかし、それが最短かどうか、または分割/マージが効率的かどうかはわかりません。

4

1 に答える 1

1

分割し、使用cvThresholdしてからマージしてみてください。cvSetImageCOI分割を避けるために使用することをやめることもできます。しきい値コードがCOIをサポートしているかどうかはわかりません。

両方のバージョンのプロファイルを作成し、それらのパフォーマンスを比較することをお勧めします。同じことをする気がします。

于 2011-09-26T12:07:59.203 に答える