OpenCV C++车型识别2-形状匹配

这个程序使用OpenCV C++实现简单的车型识别,这一小节识别具体的车型。

形状数据库里有四种,分别是0--小汽车、1--SUV、2--商务车、3--面包车:

输入图片:

按照第一节《OpenCV C++车型识别1-图像预处理-CSDN博客》,把输入图片处理成下面这样:

很明显能看出来这个图片和上面的1.bmp比较像,对应的车型是SUV.

这是CMD里的输出:

代码:

cpp 复制代码
    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_sample=NULL;
	storage_sample=cvCreateMemStorage(0);
	cvClearMemStorage(storage_sample);
	CvSeq* contours_data[4];
	for(int i=0;i<4;i++)
		contours_data[i]=0;
	for(int i=0;i<4;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 i=0;i<4;i++)	
	{
		xiangshidu[i]=cvMatchShapes(contour,contours_data[i],2,0);
	}

	int BestMatch=0;
	double min_xiangshidu=xiangshidu[0];
	for(int i=0;i<4;i++)
	{	
		if(xiangshidu[i]<min_xiangshidu)
		{
			min_xiangshidu=xiangshidu[i];
			BestMatch=i;
		}
	}
		switch (BestMatch)
		{
		case 0:
			AfxMessageBox("车型为:小汽车");
		    break;
		case 1:
			AfxMessageBox("车型为:SUV");
			break;
		case 2:
			AfxMessageBox("车型为:商务车");
			break;
		case 3:
			AfxMessageBox("车型为:面包车");
			break;
		default:
			AfxMessageBox("识别失败");
			break;
		}
相关推荐
m4Rk_7 小时前
【论文阅读】Agent 记忆机制(83):Inside Out——用可演化 PersonaTree 构建 Agent 的核心长期记忆
论文阅读·人工智能·学习·开源·github
运行时异常7 小时前
【WMS 仓储系统集成 AI Agent 实战】第 8 讲(终篇):生产部署与并发安全——Semaphore 放进 Flux.defer 的坑,压测抓了一晚上
人工智能·安全
杨杨杨大侠7 小时前
Jev、Kev、Laya:决策模型怎么选,什么时候需要微调?
人工智能·python·agent
代码方舟7 小时前
零信任架构实战:基于天远人企关联构建自动化供应链金融网关
运维·人工智能·架构·自动化
蒸蒸yyyyzwd7 小时前
秋招学习笔记 day46
c++·八股
虹科网络安全7 小时前
“顶会”看安全(十八):超越越狱:揭示由能力边界模糊引发的 LLM 应用安全风险
人工智能·安全
Maiko Star7 小时前
* LangChain 提示词模板详解:ChatPromptTemplate 的使用与高级特性
java·人工智能·langchain
鬓戈7 小时前
Rust 语言与 AI 应用生态调研及学习路径
人工智能·学习·rust
天远API7 小时前
零信任架构实战:基于天远人企关联构建自动化图谱网关
网络·人工智能·架构·自动化
爱吃提升7 小时前
文生视频模型发展趋势(2026)
人工智能·音视频