永发信息网

如何利用OPENCV的matchShapes进行轮廓匹配

答案:2  悬赏:80  手机版
解决时间 2021-03-16 16:12
  • 提问者网友:山高云阔
  • 2021-03-16 05:43
如何利用OPENCV的matchShapes进行轮廓匹配
最佳答案
  • 五星知识达人网友:一袍清酒付
  • 2021-03-16 06:06
0),w1,THRESH_BINARY),CV_CONTOURS_MATCH_I3, CV_8UC3),w1;/, k;

  Mat f;E  主要步骤1,closerect);;/w1[0]; w;<,减少孔洞等次要特征,255;

  Mat closerect=getStructuringElement(MORPH_RECT;/.读取一幅图片;pause",3))。而不同的算子具有不同的匹配算子方法::WRITE).jpg",50,RETR_CCOMP,w,满足了需要:.进行形状轮廓匹配;

  int idx=0,并且对其进行二值化;

  system("f",0),我们就得到了轮廓边缘的提取和匹配:zeros(k1:,hierarchy1 ,CHAIN_APPROX_SIMPLE), CV_8UC3), k1;opencv;

  using namespace cv:,255.dat",f;std;进行结构算子生成

  morphologyEx(f:zeros(k;iostream>/

  findContours(f.对其进行形态学处理。4;8;

  double ffff=matchShapes(w[0];

  vector<对图像进行二值化

  threshold(k1,CHAIN_APPROX_SIMPLE),保留其主要特征,RETR_CCOMP;

  Mat dst1 = Mat;ffff
  findContours(f1;/>。3;/f,Size(3.rows,FileStorage;

  morphologyEx(f1;进行形态学开运算

  Mat dst = Mat,w1[0];

  Mat k1=imread(":cout<.rows:

  #include <

  Mat f1;

  int main()

  {

  Mat k=imread(".jpg":;/进行轮廓匹配

  std,得到其匹配值,hierarchy1,从而判断是否是同一个形状; /

  using namespace std,f1,MORPH_OPEN;/,THRESH_BINARY),closerect),hierarchy。

  下面是演示代码,MORPH_OPEN。2;

  #include " hierarchy;

  vector<.cols:endl;<:/,1;opencv2/Vec4i>

  return 0;

  fs<".hpp"

  FileStorage fs(",50:/.cols;9;

  threshold(k;;

  }

  这样,0),f1;vector<,f;<);;<
全部回答
  • 1楼网友:雪起风沙痕
  • 2021-03-16 07:42
主要步骤1.读取一幅图片,并且对其进行二值化。2.对其进行形态学处理,减少孔洞等次要特征,保留其主要特征。3.进行边缘提取。4.进行形状轮廓匹配,得到其匹配值,从而判断是否是同一个形状。 下面是演示代码: #include #include "opencv2/opencv.hpp" using namespace std; using namespace cv; int main() { mat k=imread("e:/testgit/8.jpg",0); mat f; mat k1=imread("e:/testgit/9.jpg",0); mat f1; threshold(k,f,50,255,thresh_binary);//对图像进行二值化 threshold(k1,f1,50,255,thresh_binary); mat closerect=getstructuringelement(morph_rect,size(3,3)); //进行结构算子生成 morphologyex(f,f,morph_open,closerect); morphologyex(f1,f1,morph_open,closerect);//进行形态学开运算 mat dst = mat::zeros(k.rows, k.cols, cv_8uc3); mat dst1 = mat::zeros(k1.rows, k1.cols, cv_8uc3); vector> w,w1; vector hierarchy,hierarchy1 ; findcontours(f,w,hierarchy,retr_ccomp,chain_approx_simple);//提取轮廓元素 findcontours(f1,w1,hierarchy1,retr_ccomp,chain_approx_simple); filestorage fs("f.dat",filestorage::write); fs<<"f"<
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯