gpt4 book ai didi

ios - OpenCV matchShapes() 输出值

转载 作者:行者123 更新时间:2023-11-28 16:06:01 24 4
gpt4 key购买 nike

如何使用 OpenCV matchShapes 输出的值?我们实现了 OpenCV matchShapes 函数来比较两个图像,特别是形状。但是当我们得到答案时,我们很困惑如何使用这些值?

代码是

- (bool) someMethod:(UIImage *)image :(UIImage *)temp {

RNG rng(12345);

cv::Mat src_base, hsv_base;
cv::Mat src_test1, hsv_test1;

src_base = [self cvMatWithImage:image];
src_test1 = [self cvMatWithImage:temp];

int thresh=150;
double ans=0, result=0;

Mat imageresult1, imageresult2;

cv::cvtColor(src_base, hsv_base, cv::COLOR_BGR2HSV);
cv::cvtColor(src_test1, hsv_test1, cv::COLOR_BGR2HSV);

std::vector<std::vector<cv::Point>>contours1, contours2;
std::vector<Vec4i>hierarchy1, hierarchy2;

Canny(hsv_base, imageresult1, thresh, thresh*2);
Canny(hsv_test1, 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++)
{
//cout<<contours1[i]<<endl;
Scalar color=Scalar(rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255));
drawContours(imageresult1,contours1,i,color,1,8,hierarchy1,0,cv::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,cv::Point());
}


for(int i=0;i<contours1.size();i++)
{
ans = matchShapes(contours1[i],contours2[i],CV_CONTOURS_MATCH_I1,0);
cout<<" "<<ans<<endl;
}

std::cout<<"The answer is "<<ans<<endl;

if (ans<=20) {
return true;
}

return false;

输出值为

0.225069 0.234417 0 7.63599 0 7.06392 0.335966 0.211358 0.327552 0.842969 0.761659 0.614039

图像是Image

最佳答案

请参阅我对 imoutidi 的回答的评论。这是一个直观的解释:第一个列是两个原始图像,第二个是精明的边缘。 3.col 是任意选择的两个图像中具有相同索引的检测到的形状。如您所见,甚至不能保证它们对应于人类看到的相同图像部分。在这种情况下,您最终比较的是不同的三角形,这对整体形状的相似性影响不大。这两个形状数组的大小甚至都不相同,因为例如底部绘图中有更多结构(例如粗线之间的小形状)。 4.col是数组中的最后一个形状。这是比较图像的最佳选择。在此示例中,我得到的相似度值为 0.0920794532771。 enter image description here

关于ios - OpenCV matchShapes() 输出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40256280/

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