gpt4 book ai didi

c++ - 如何处理 matchShapes() 函数的输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:46:43 31 4
gpt4 key购买 nike

下面给出了用于比较 2 个形状的程序代码。

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace cv;
using namespace std;

int main()
{
RNG rng(12345);
Mat image1=cvLoadImage("C:/Users/Administrator/Desktop/circle1.png",1);
Mat image2=cvLoadImage("C:/Users/Administrator/Desktop/circle2.png",1);
Mat imagegray1, imagegray2, imageresult1, imageresult2;
int thresh=150;
double ans=0, result=0;;
cvtColor(image1, imagegray1,CV_BGR2GRAY);
cvtColor(image2,imagegray2,CV_BGR2GRAY);

vector<vector<Point>>contours1, contours2;
vector<Vec4i>hierarchy1, hierarchy2;

Canny(imagegray1, imageresult1,thresh, thresh*2);
Canny(imagegray2, imageresult2,thresh, thresh*2);

findContours(imageresult1,contours1,hierarchy1,CV_RETR_TREE,CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0));
for(int i=0;i<contours1.size();i++)
{
Scalar color=Scalar(rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255));
drawContours(imageresult1,contours1,i,color,1,8,hierarchy1,0,Point());
}

findContours(imageresult2,contours2,hierarchy2,CV_RETR_TREE,CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0));
for(int i=0;i<contours2.size();i++)
{
Scalar color=Scalar(rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255));
drawContours(imageresult2,contours2,i,color,1,8,hierarchy2,0,Point());
}
for(int i=0;i<contours1.size();i++)
{
ans=matchShapes(contours1[i],contours2[i],CV_CONTOURS_MATCH_I1,0);
cout<<ans;
getchar();
}
}

我用这些图像运行它:

Image 1 enter image description here

在这种情况下,即变量 ans 的值是:

8.97971e-007

1.73019e-005

2.25315e-006

2.21416e-005

如何使用这些值来确定形状是否相互匹配?

最佳答案

我找到了 this显示结果。他在匹配两个相同的轮廓时得到 0,00,在旋转轮廓时得到 0,001。我会说,根据首选精度,没有超过 0,1 的匹配项。除此以外,我找不到任何解释返回值的内容。

8,97971e-7 = 0,000000897971
1,73019e-5 = 0,0000173019
2,25315e-6 = 0,00000225315
2,21416e-5 = 0,0000221416

您的结果表明所有找到的轮廓都非常匹配。尝试使用 drawContours 查看实际找到的轮廓,然后结果可能会变得易于理解。也许您还可以应用 approxPolyDP 并查看是否会获得更好的结果。

关于c++ - 如何处理 matchShapes() 函数的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21132963/

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