Opencv: Tidak ada fungsi windowedMatchingMask () di opencv3

Dibuat pada 27 Jul 2015  ·  3Komentar  ·  Sumber: opencv/opencv

Ditransfer dari http://code.opencv.org/issues/4022

|| Ozan Caglayan on 2014-11-24 14:27
|| Priority: Normal
|| Affected: branch 'master' (3.0-dev)
|| Category: features2d
|| Tracker: Bug
|| Difficulty: 
|| PR: 
|| Platform: Any / Any

Tidak ada fungsi windowedMatchingMask () di opencv3

Hi,

I was trying to port an existing OpenCV code to the 3.0-beta but figured out that the function windowedMatchingMask() which was defined in modules/features2d/src/matchers.cpp in OpenCV 2.x no longer exists in OpenCV 3.

I think it was actually moved into the contrib repository's xfeatures2d module with the following commit:

commit d4a77fc42858fc3711e156115c76318d93b7ccb0
Author: Vadim Pisarevsky <[email protected]>
Date:   Mon Aug 11 23:25:30 2014 +0400

    added xfeatures2d (made of opencv/nonfree and a part of opencv/features2d)


But apparently the above commit didn't bring that function into opencv_contrib and commented out the single call to windowedMatchingMask():
modules/xfeatures2d/samples/video_homography.cpp:            //Mat mask = windowedMatchingMask(test_kpts, train_kpts, 25, 25);

So maybe the function was dropped completely but I couldn't find any clue about this on Google.

Sejarah

Maksim Shabunin pada 2015-04-27 09:12
-   Target version changed from 3.0-beta to 3.0
3.4 auto-transferred bug features2d normal

Komentar yang paling membantu

Sepertinya tidak ada pengganti di OpenCV3 untuk windowedMatchingMask . Solusi untuk masalah ini adalah dengan menambahkan kode sumber OpenCV 2.4 berikut di kode Anda:

cv::Mat windowedMatchingMask( const vector<cv::KeyPoint>& keypoints1, const vector<cv::KeyPoint>& keypoints2,
                          float maxDeltaX, float maxDeltaY )
{
  if( keypoints1.empty() || keypoints2.empty() )
    return cv::Mat();

  int n1 = (int)keypoints1.size(), n2 = (int)keypoints2.size();
  cv::Mat mask( n1, n2, CV_8UC1 );
  for( int i = 0; i < n1; i++ )
    {
      for( int j = 0; j < n2; j++ )
        {
          cv::Point2f diff = keypoints2[j].pt - keypoints1[i].pt;
          mask.at<uchar>(i, j) = std::abs(diff.x) < maxDeltaX && std::abs(diff.y) < maxDeltaY;
        }
    }
  return mask;
}

Semua 3 komentar

Tersandung dalam hal ini juga.
Saya harap ini tidak disengaja?

Porting beberapa kode 2.4 dan bertanya-tanya tentang ini juga. Apakah ada fungsi yang menggantikannya?

Sepertinya tidak ada pengganti di OpenCV3 untuk windowedMatchingMask . Solusi untuk masalah ini adalah dengan menambahkan kode sumber OpenCV 2.4 berikut di kode Anda:

cv::Mat windowedMatchingMask( const vector<cv::KeyPoint>& keypoints1, const vector<cv::KeyPoint>& keypoints2,
                          float maxDeltaX, float maxDeltaY )
{
  if( keypoints1.empty() || keypoints2.empty() )
    return cv::Mat();

  int n1 = (int)keypoints1.size(), n2 = (int)keypoints2.size();
  cv::Mat mask( n1, n2, CV_8UC1 );
  for( int i = 0; i < n1; i++ )
    {
      for( int j = 0; j < n2; j++ )
        {
          cv::Point2f diff = keypoints2[j].pt - keypoints1[i].pt;
          mask.at<uchar>(i, j) = std::abs(diff.x) < maxDeltaX && std::abs(diff.y) < maxDeltaY;
        }
    }
  return mask;
}
Apakah halaman ini membantu?
0 / 5 - 0 peringkat