3036|5

60

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

基于STM32F7的视觉小球颜色识别系统--项目终结 [复制链接]

本帖最后由 wwchang 于 2015-12-28 09:01 编辑

                             项目名称:基于STM32F7的视觉小球颜色识别系统
1.功能实现:用STM32F7驱动摄像头,实时采集图像,进行颜色识别,并且统计出小球的直径。做图像处理都是基于PC端的开发,一直希望STM32可以用。后续可以加入其它的一些算法,比如字符识别,人脸识别等。

2.软硬件方案:


   a.硬件实现框图

本方案我们采用了OV9655的130万像素摄像头,并通过转接板自己设计的,配合STM32F746自带的摄像头接口。如图所示:

硬件电路:
摄像头转接板.rar (97.61 KB, 下载次数: 12)

   b.软件实现框图

整个软件主要包括包括:摄像头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 软件界面

3.演示视频
OV9655图像处理视频
4.源码
小球颜色尺寸识别源码.zip (857.25 KB, 下载次数: 43)
5.参考文档和例程 STM32F4DIS-CAM REV1.0.pdf (18.44 KB, 下载次数: 18)
在stm32上实现颜色跟踪 .pdf (3.77 MB, 下载次数: 56)
EasyTrace演示工程.zip (313.06 KB, 下载次数: 24)

6.项目帖子:
开箱照
硬件电路
成员分工,进度
7.项目完成致谢
这个项目结构完成,首先离不开几个组员努力的结果:@54chenjq  @DavidZH  @efree  等三位组员的辛苦努力。感谢管理员@nmg的支持,也要感谢IC-爬虫哥的技术支持。 由于时间有限,我们的项目还有很多功能没有完成,后续还会加入字符识别,人脸识别。谢谢EEWROLD,谢谢ST,给了我们这么好的一个学习机会!


此帖出自stm32/stm8论坛

最新回复

赶上活动的末班车了  详情 回复 发表于 2015-12-28 16:48
点赞 关注(2)
 

回复
举报

667

帖子

3

TA的资源

版主

沙发
 
很不错呀。
此帖出自stm32/stm8论坛

点评

这么晚了,还在呀。  详情 回复 发表于 2015-12-28 09:00
 
 

回复

60

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

这么晚了,还在呀。
此帖出自stm32/stm8论坛
 
 

回复

2万

帖子

74

TA的资源

管理员

4
 
结构清晰  赞一个
此帖出自stm32/stm8论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

2057

帖子

0

TA的资源

五彩晶圆(初级)

5
 
赶上活动的末班车了
此帖出自stm32/stm8论坛

点评

谢谢虫哥。  详情 回复 发表于 2015-12-28 18:17
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(中级)

6
 
IC爬虫 发表于 2015-12-28 16:48
赶上活动的末班车了

谢谢虫哥。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表