找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 5611|回復: 4
打印 上一主題 下一主題
收起左側(cè)

基于ov7670顏色識別

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:261060 發(fā)表于 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 顏色識別.7z

485.7 KB, 下載次數(shù): 43, 下載積分: 黑幣 -5

評分

參與人數(shù) 3黑幣 +85 收起 理由
726434632 + 5 很給力!
yanyuwei + 30 共享資料的黑幣獎勵!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發(fā)
ID:383374 發(fā)表于 2018-11-29 13:42 | 只看該作者
還不錯的歷程
回復

使用道具 舉報

板凳
ID:6656 發(fā)表于 2018-12-10 14:15 | 只看該作者
多謝樓主分享資料
回復

使用道具 舉報

地板
ID:138247 發(fā)表于 2019-5-2 15:24 | 只看該作者

謝謝樓主分享。。。
回復

使用道具 舉報

5#
ID:349598 發(fā)表于 2024-9-28 15:18 | 只看該作者
謝謝分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表