单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1675|回复: 3
打印 上一主题 下一主题
收起左侧

基于ov7670颜色识别

[复制链接]
跳转到指定楼层
楼主
wcl 发表于 2018-1-4 11:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
EasyTrace简介:
使用EasyTrace可以对单一颜色物体进行实时跟踪识别

EasyTrace特点:
1.代码只有300行,非常简单
2.识别一次只需要2至5毫秒,实时性强
3.只有1个API,使用方便

static int ColorMatch(const COLOR_HSL *Hsl,const TARGET_CONDI *Condition)//颜色匹配
{
        if(
                Hsl->hue                >        Condition->H_MIN &&
                Hsl->hue                <        Condition->H_MAX &&
                Hsl->saturation        >        Condition->S_MIN &&
                Hsl->saturation        <   Condition->S_MAX &&
                Hsl->luminance        >        Condition->L_MIN &&
                Hsl->luminance        <   Condition->L_MAX
    )
                return 1;
        else
                return 0;
}
//从腐蚀中心向外腐蚀得到新的腐蚀中心
static int Corrode(unsigned int oldx,unsigned int oldy,const TARGET_CONDI *Condition,RESULT *Resu)
{
        unsigned int Xmin,Xmax,Ymin,Ymax,i,FailCount=0;
        COLOR_RGB Rgb;
        COLOR_HSL Hsl;
       
        for(i=oldx;i>IMG_X;i--)
        {
                ReadColor(i,oldy,&Rgb);
                RGBtoHSL(&Rgb,&Hsl);
                if(!ColorMatch(&Hsl,Condition))
                        FailCount++;
                if(FailCount>(((Condition->WIDTH_MIN+Condition->WIDTH_MAX)>>2)>>ALLOW_FAIL_PER))
                        break;       
        }
        Xmin=i;
        FailCount=0;
       
        for(i=oldx;i<IMG_X+IMG_W;i++)
        {
                ReadColor(i,oldy,&Rgb);
                RGBtoHSL(&Rgb,&Hsl);
                if(!ColorMatch(&Hsl,Condition))
                        FailCount++;
                if(FailCount>(((Condition->WIDTH_MIN+Condition->WIDTH_MAX)>>2)>>ALLOW_FAIL_PER))
                        break;       
        }
        Xmax=i;
        FailCount=0;
       
        for(i=oldy;i>IMG_Y;i--)
        {
                ReadColor(oldx,i,&Rgb);
                RGBtoHSL(&Rgb,&Hsl);
                if(!ColorMatch(&Hsl,Condition))
                        FailCount++;
                if(FailCount>(((Condition->HIGHT_MIN+Condition->HIGHT_MAX)>>2)>>ALLOW_FAIL_PER))
                        break;       
        }
        Ymin=i;
        FailCount=0;
       
        for(i=oldy;i<IMG_Y+IMG_H;i++)
        {
                ReadColor(oldx,i,&Rgb);
                RGBtoHSL(&Rgb,&Hsl);
                if(!ColorMatch(&Hsl,Condition))
                        FailCount++;
                if(FailCount>(((Condition->HIGHT_MIN+Condition->HIGHT_MAX)>>2)>>ALLOW_FAIL_PER))
                        break;       
        }
        Ymax=i;
        FailCount=0;
       
        Resu->x        = (Xmin+Xmax)/2;
        Resu->y        = (Ymin+Ymax)/2;
        Resu->w        = Xmax-Xmin;
        Resu->h        = Ymax-Ymin;

        if(((Xmax-Xmin)>(Condition->WIDTH_MIN)) && ((Ymax-Ymin)>(Condition->HIGHT_MIN)) &&\
           ((Xmax-Xmin)<(Condition->WIDTH_MAX)) && ((Ymax-Ymin)<(Condition->HIGHT_MAX)) )
                return 1;       
        else
                return 0;       
}


Colibri_GD32F207_ov7670 颜色识别.zip

4.18 MB, 下载次数: 25, 下载积分: 黑币 -5

评分

参与人数 3黑币 +85 收起 理由
726434632 + 5 很给力!
yanyuwei + 30 共享资料的黑币奖励!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

沙发
梦园心田 发表于 2018-11-29 13:42 | 只看该作者
还不错的历程
回复

使用道具 举报

板凳
yb1988001 发表于 2018-12-10 14:15 | 只看该作者
多谢楼主分享资料
回复

使用道具 举报

地板
plj213 发表于 2019-5-2 15:24 | 只看该作者

谢谢楼主分享。。。
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛5群 联系QQ:125739409;技术交流QQ群174280738

Powered by 单片机教程网

快速回复 返回顶部 返回列表