gpt4 book ai didi

opencv - Mat或vector 类型中的哪一种类型更适合与函数EstimateRigidTransform()使用?

转载 作者:行者123 更新时间:2023-12-02 17:48:52 34 4
gpt4 key购买 nike

众所周知,我们可以将两种类型之一的两个参数传递给estimateRigidTransform()函数: Mat estimateRigidTransform(InputArray src, InputArray dst, bool fullAffine)

  • cv::Mat frame1, frame2;
  • std::vector<cv::Point2f> frame1_features, frame2_features;

  • 也就是说,例如,要实现视频稳定(抖动消除),我们可以使用以下两种方法之一:

    cv::Mat
  • :video stabilization using opencv

  • cv::Mat frame1 = imread("frame1.png");
    cv::Mat frame2 = imread("frame2.png");
    Mat M = estimateRigidTransform(frame1, frame2, 0);
    warpAffine(frame2, output, M, Size(640,480), INTER_NEAREST|WARP_INVERSE_MAP);

    std::vector<cv::Point2f> features;

  • vector <uchar> status;
    vector <float> err;

    std::vector <cv::Point2f> frame1_features, frame2_features;
    cv::Mat frame1 = imread("frame1.png");
    cv::Mat frame2 = imread("frame2.png");
    goodFeaturesToTrack(frame1 , frame1_features, 200, 0.01, 30);
    goodFeaturesToTrack(frame2 , frame2_features, 200, 0.01, 30);
    calcOpticalFlowPyrLK(frame1 , frame2, frame1_features, frame2_features, status, err);

    std::vector <cv::Point2f> frame1_features_ok, frame2_features_ok;
    for(size_t i=0; i < status.size(); i++) {
    if(status[i]) {
    frame1_features_ok.push_back(frame1_features[i]);
    frame2_features_ok.push_back(frame2_features[i]);
    }
    }

    Mat M = estimateRigidTransform(frame1_features_ok, frame2_features_ok, 0);
    warpAffine(frame2, output, M, Size(640,480), INTER_NEAREST|WARP_INVERSE_MAP);

    哪种方法更适合使用,为什么?

    即哪种 Matvector<Point2f>类型更适合与函数EstimateRigidTransform()配合使用?

    最佳答案

    在第一种情况下,OpenCV将在函数calcOpticalFlowPyrLK()中隐式执行estimateRigidTransform()。请参阅lkpyramid.cpp @ line 1383中的实现。

    这是两种方法之间的唯一区别。如果发现frame1frame2之间的对应关系很重要,请使用版本2,否则使用版本1。

    关于opencv - Mat或vector <Point2f>类型中的哪一种类型更适合与函数EstimateRigidTransform()使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28412179/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com