这个程序使用OpenCV C实现简单的车型识别这一小节识别具体的车型。形状数据库里有四种分别是0--小汽车、1--SUV、2--商务车、3--面包车输入图片按照第一节《OpenCV C车型识别1-图像预处理-CSDN博客》把输入图片处理成下面这样很明显能看出来这个图片和上面的1.bmp比较像对应的车型是SUV.这是CMD里的输出代码IplImage *sample[4]; sample[0]cvLoadImage(0.bmp,0); sample[1]cvLoadImage(1.bmp,0); sample[2]cvLoadImage(2.bmp,0); sample[3]cvLoadImage(3.bmp,0); CvMemStorage *storage_sampleNULL; storage_samplecvCreateMemStorage(0); cvClearMemStorage(storage_sample); CvSeq* contours_data[4]; for(int i0;i4;i) contours_data[i]0; for(int i0;i4;i) cvFindContours(sample[i],storage_sample,contours_data[i],sizeof(CvContour),CV_RETR_EXTERNAL); double xiangshidu[4]; memset(xiangshidu,0,sizeof(xiangshidu)); xiangshidu[0]cvMatchShapes(contour,contours_data[0],2); for(int i0;i4;i) { xiangshidu[i]cvMatchShapes(contour,contours_data[i],2,0); } int BestMatch0; double min_xiangshiduxiangshidu[0]; for(int i0;i4;i) { if(xiangshidu[i]min_xiangshidu) { min_xiangshiduxiangshidu[i]; BestMatchi; } } switch (BestMatch) { case 0: AfxMessageBox(车型为小汽车); break; case 1: AfxMessageBox(车型为SUV); break; case 2: AfxMessageBox(车型为商务车); break; case 3: AfxMessageBox(车型为面包车); break; default: AfxMessageBox(识别失败); break; }
OpenCV C++车型识别2-形状匹配
这个程序使用OpenCV C实现简单的车型识别这一小节识别具体的车型。形状数据库里有四种分别是0--小汽车、1--SUV、2--商务车、3--面包车输入图片按照第一节《OpenCV C车型识别1-图像预处理-CSDN博客》把输入图片处理成下面这样很明显能看出来这个图片和上面的1.bmp比较像对应的车型是SUV.这是CMD里的输出代码IplImage *sample[4]; sample[0]cvLoadImage(0.bmp,0); sample[1]cvLoadImage(1.bmp,0); sample[2]cvLoadImage(2.bmp,0); sample[3]cvLoadImage(3.bmp,0); CvMemStorage *storage_sampleNULL; storage_samplecvCreateMemStorage(0); cvClearMemStorage(storage_sample); CvSeq* contours_data[4]; for(int i0;i4;i) contours_data[i]0; for(int i0;i4;i) cvFindContours(sample[i],storage_sample,contours_data[i],sizeof(CvContour),CV_RETR_EXTERNAL); double xiangshidu[4]; memset(xiangshidu,0,sizeof(xiangshidu)); xiangshidu[0]cvMatchShapes(contour,contours_data[0],2); for(int i0;i4;i) { xiangshidu[i]cvMatchShapes(contour,contours_data[i],2,0); } int BestMatch0; double min_xiangshiduxiangshidu[0]; for(int i0;i4;i) { if(xiangshidu[i]min_xiangshidu) { min_xiangshiduxiangshidu[i]; BestMatchi; } } switch (BestMatch) { case 0: AfxMessageBox(车型为小汽车); break; case 1: AfxMessageBox(车型为SUV); break; case 2: AfxMessageBox(车型为商务车); break; case 3: AfxMessageBox(车型为面包车); break; default: AfxMessageBox(识别失败); break; }