在用ov7670做颜色识别的时候遇到一些问题,查阅很多资料才弄明白,遂整理一下。
一.腐蚀中心
int SearchCenter(uint16_t* x, uint16_t* y, const TARGET_CONDITION_t* condition, SEARCH_AREA_t* area )
{
uint16_t i, j, k;
uint16_t FailCount=0; //失败计数
uint16_t SpaceX, SpaceY;
COLOR_RGB_t rgb;
COLOR_HLS_t hls;
SpaceX = condition->WIDTH_MIN / 3;
SpaceY = condition->HEIGHT_MIN / 3;
for(i=area->Y_Start; i<area->Y_End; i+=SpaceY)
{
for(j=area->X_Start; j<area->X_End; j+=SpaceX)
{
FailCount = 0; //初始化失败计数
for(k=0; k<SpaceX+SpaceY; k++)
{
x2=j;
y2=i;
kk=k;
if(k<SpaceX)
ReadColor( j+k, i+SpaceY/2, &rgb ); //查询色块中间一横的颜色
else
{
x3= j+SpaceX/2; y3=i+k-SpaceX;
ReadColor( j+SpaceX/2, i+k-SpaceX, &rgb ); //查询