Visual Studio 2013 Express Visual C++( アンマネージドコード ) OpenCV 3.1 |
■276.OpenCV 2つの形状を比較 | Prev Top Next | |
|
2つの形状を比較します。結果が0のときは形状が同じであると判断できるようです。画像のスケール変化,回転,および反転の場合同じであると判断できるようです。
#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