[原创] 基于STM32F7的视觉小球颜色识别系统--项目终结

wwchang   2015-12-27 21:43 楼主
项目名称:基于STM32F7的视觉小球颜色识别系统 1.功能实现:用STM32F7驱动摄像头,实时采集图像,进行颜色识别,并且统计出小球的直径。做图像处理都是基于PC端的开发,一直希望STM32可以用。后续可以加入其它的一些算法,比如字符识别,人脸识别等。 2.软硬件方案: a.硬件实现框图 QQ图片20151227204647.png 本方案我们采用了OV9655的130万像素摄像头,并通过转接板自己设计的,配合STM32F746自带的摄像头接口。如图所示: 140193016532163741.jpg QQ图片20151227205816.jpg 硬件电路:
摄像头转接板.rar (97.61 KB)
(下载次数: 12, 2015-12-27 21:05 上传)
163313xeoqankgtphqzk4a.jpg.thumb.jpg b.软件实现框图 QQ图片20151227205406.png 整个软件主要包括包括:摄像头OV9655驱动的实现,图像颜色识别算法实现,图像尺寸检测算法检测等 算法的主要思想如下: 有过使用photoshop经历的人对色彩模式应该不会陌生,大家应该非常熟悉的是RGB色彩模式,因为它是最常见的也是听说最多的,另外还有一种色彩模式是HSL,H代表色相,S代表饱和度,L代表亮度,这种色彩模式是美术人最常用的,这是因为它是基于人对色彩的心理感受的一种色彩模式。 RGB向HSL色彩模式的转换在图像处理中应用较为广泛,我们的小球识别中很可能需要该步骤,原理与公式讲起来需要太多的时间与空间,大家可能也不希望听我啰嗦,那么我就把代码传上来吧。 #define min3v(v1, v2, v3) ((v1)>(v2)? ((v2)>(v3)?(v3):(v2)):((v1)>(v3)?(v3):(v1))) #define max3v(v1, v2, v3) ((v1)<(v2)? ((v2)<(v3)?(v3):(v2)):((v1)<(v3)?(v3):(v1))) typedef struct{ unsigned char red; // [0,255] unsigned char green; // [0,255] unsigned char blue; // [0,255] }COLOR_RGB;//RGB格式颜色 typedef struct{ unsigned char hue; // [0,240] unsigned char saturation; // [0,240] unsigned char luminance; // [0,240] }COLOR_HSL;//HSL格式颜? //RGB转HSL static void RGBtoHSL(const COLOR_RGB *Rgb, COLOR_HSL *Hsl) { int h,s,l,maxVal,minVal,difVal; int r = Rgb->red; int g = Rgb->green; int b = Rgb->blue; maxVal = max3v(r, g, b); minVal = min3v(r, g, b); difVal = maxVal-minVal; //计算亮度 l = (maxVal+minVal)*240/255/2; if(maxVal == minVal)//若r=g=b { h = 0; s = 0; } else { //计算色调 if(maxVal==r) { if(g>=b) h = 40*(g-b)/(difVal); else h = 40*(g-b)/(difVal) + 240; } else if(maxVal==g) h = 40*(b-r)/(difVal) + 80; else if(maxVal==b) h = 40*(r-g)/(difVal) + 160; //计算饱和度 if(l == 0) s = 0; else if(l<=120) s = (difVal)*240/(maxVal+minVal); else s = (difVal)*240/(511 - (maxVal+minVal)); } Hsl->hue = (unsigned char)(((h>240)? 240 : ((h<0)?0:h))); Hsl->saturation = (unsigned char)(((s>240)? 240 : ((s<0)?0:s))); Hsl->luminance = (unsigned char)(((l>240)? 240 : ((l<0)?0:l))); } c 软件界面 QQ图片20151227212323.png 3.演示视频 OV9655图像处理视频 4.源码
小球颜色尺寸识别源码.zip (857.25 KB)
(下载次数: 43, 2015-12-27 21:43 上传)
5.参考文档和例程
STM32F4DIS-CAM REV1.0.pdf (18.44 KB)
(下载次数: 18, 2015-12-27 21:20 上传)
在stm32上实现颜色跟踪 .pdf (3.77 MB)
(下载次数: 56, 2015-12-27 21:21 上传)
EasyTrace演示工程.zip (313.06 KB)
(下载次数: 24, 2015-12-27 21:21 上传)
6.项目帖子: 开箱照 硬件电路 成员分工,进度 7.项目完成致谢 这个项目结构完成,首先离不开几个组员努力的结果:@54chenjq @DavidZH @efree 等三位组员的辛苦努力。感谢管理员@nmg的支持,也要感谢IC-爬虫哥的技术支持。 由于时间有限,我们的项目还有很多功能没有完成,后续还会加入字符识别,人脸识别。谢谢EEWROLD,谢谢ST,给了我们这么好的一个学习机会! 本帖最后由 wwchang 于 2015-12-28 09:01 编辑

回复评论 (5)

很不错呀。
点赞  2015-12-27 22:44
引用: nemo1991 发表于 2015-12-27 22:44
很不错呀。

这么晚了,还在呀。
点赞  2015-12-28 09:00
结构清晰  赞一个
加油!在电子行业默默贡献自己的力量!:)
点赞  2015-12-28 09:53
赶上活动的末班车了
点赞  2015-12-28 16:48
引用: IC爬虫 发表于 2015-12-28 16:48
赶上活动的末班车了

谢谢虫哥。
点赞  2015-12-28 18:17
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复