Visual Studio 2013 Express
 Visual C++( アンマネージドコード )
 OpenCV 3.1

■276.OpenCV 2つの形状を比較 Prev Top Next
関連ページ:

2つの形状を比較します。結果が0のときは形状が同じであると判断できるようです。画像のスケール変化,回転,および反転の場合同じであると判断できるようです。


---main.cpp---

#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>

#pragma comment( lib, "opencv_world300d.lib" )

int main(int argc, const char* argv[])
{
   int hr = -1;

   try
   {
      cv::Mat src1, src2;

      src1 = cv::imread("D:/TEMP/MaverickProj/Image/OpenCV/38/Texture.png", cv::IMREAD_GRAYSCALE);
      src2 = cv::imread("D:/TEMP/MaverickProj/Image/OpenCV/38/Texture2.png", cv::IMREAD_GRAYSCALE);


      cv::namedWindow("Source1", 1);
      cv::imshow("Source1", src1);

      cv::namedWindow("Source2", 1);
      cv::imshow("Source2", src2);

      // 2つの画像を比較する
      double d = cv::matchShapes(src1, src2, CV_CONTOURS_MATCH_I1, 0);

      std::cout << d << std::endl;

      cv::waitKey(0);

      hr = 0;
   }

   catch (cv::Exception ex)
   {
      std::cout << ex.err << std::endl;
   }

   // ウィンドウの破棄
   cv::destroyAllWindows();

   return hr;
}

反転の場合のcv::matchShapes()の判定結果: 0

回転の場合のcv::matchShapes()の判定結果: 0

スケールの場合のcv::matchShapes()の判定結果: 8.99749e-006

色調反転の場合のcv::matchShapes()の判定結果: 0.101174


Prev Top Next
inserted by FC2 system