Deep Copy cv::StereoBM 深度拷贝

Posted Grandyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Deep Copy cv::StereoBM 深度拷贝相关的知识,希望对你有一定的参考价值。

 

在使用OpenCV的三维立体重建的库时,一个重要的步骤就是生成左右视图的差异图Disparity,而控制生成disparity的参数的类是cv::StereoBM,我们有时候需要拷贝一份cv::StereoBM,然后改变其中的参数值,但是如果用默认的等号‘=’来进行拷贝,其实是浅拷贝,如果改变拷贝项的参数值,原来的参数值也会跟着改变,所以我们需要自己写一个深拷贝的函数,如下所示:

 

/**
 * Deep copy cv::StereoBM bm1 to bm2
 */
void copy_bm(const cv::StereoBM &bm1, cv::StereoBM &bm2) {
    if (!bm1.state) {
        return;
    }
    bm2.init(CV_STEREO_BM_NORMALIZED_RESPONSE, 0, 21);
    bm2.state->preFilterSize = bm1.state->preFilterSize;
    bm2.state->preFilterCap = bm1.state->preFilterCap;
    bm2.state->SADWindowSize = bm1.state->SADWindowSize;
    bm2.state->minDisparity = bm1.state->minDisparity;
    bm2.state->numberOfDisparities = bm1.state->numberOfDisparities;
    bm2.state->textureThreshold = bm1.state->textureThreshold;
    bm2.state->uniquenessRatio = bm1.state->uniquenessRatio;
    bm2.state->speckleWindowSize = bm1.state->speckleWindowSize;
    bm2.state->speckleRange = bm1.state->speckleRange;
}

 

以上是关于Deep Copy cv::StereoBM 深度拷贝的主要内容,如果未能解决你的问题,请参考以下文章

正确校正 GPU 的立体图像(opencv)

Python 直接赋值浅拷贝和深度拷贝区别

g_slist_copy_deep 返回分段错误

Shallow copy and Deep copy

deep-copy

python中的shallow copy 与 deep copy