关于STM32F103+OV7670(带FIFO)采集单位区域内颜 {MOD}块数据错误的问题,求各位大佬指导指导!!!

2019-08-12 16:45发布

最近用STM32F103+OV7670(带FIFO)做一个单位区域内颜 {MOD}块的识别功能,前期采用的原子哥的MINI板摄像头例程,自己在上面做了修改,现在遇到的问题就是:我自定义采集的单位区域40*80像素,直接把FIFO里面的color(RGB565格式)单位区域内数据取出来,暂时定A4白纸为被拍摄颜 {MOD}块(加了一颗白光LED做补光灯),然后通过串口的方式将3200个像素点的打印出来并作为颜 {MOD}参考标准放在程序里的一个u16 Standard_Data[3200]数组里面,并以此数组里的数据作为参考标准和我采集到的颜 {MOD}块(还是A4白纸,采集区域还是40*80大小)像素点数据一一对比,两个数组里面对应元素数据相同则设定OK_Count变量累计成功次数,反之则设定Erro_Count变量累计错误次数,采用按键触发调用camera_refresh()函数,几次测试下来发现数据差异太大,有时候正确率不到50%!!!请问各位大佬们,为什么同样光照下同样的颜 {MOD}块的RGB565像素数据会不一样呢?这样的话就无法实现颜 {MOD}块识别功能了,求各位大佬指导指导,小弟万分感谢!!!
  附主要部分程序:
       void Read_Data()
{
       
         for(j=0;j<dpi;j++)                //32200
                {
                        GPIOB->CRL=0X88888888;                  
                        OV7670_RCK=0;
                        color=OV7670_DATA;                //读数据
                        OV7670_RCK=1;        
                        color<<=8;                                          
                        OV7670_RCK=0;
                        color|=OV7670_DATA;                //读数据                       
                        OV7670_RCK=1;
                        GPIOB->CRL=0X33333333;                                                          
                        LCD_WR_DATA(color);         
                        Picture_Data[j]=color;           //将FIFO的RGB565像素点数据放到Picture_Data[]里形成整个图像
                        if(j<=dpi)
                        {
                       
//   printf("0x%04X, ",Picture_Data[j]);       //采集参考图像标准像素点用,后面做图像对比时就屏蔽该语句
                        }
                }  

}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
奔跑的藤
2019-08-12 21:36
附加像素点数据对比程序:void Data_Check() {          u32 m;         for(m=0;m<dpi;m++)         {                         if(Standard_Data[m]==Picture_Data[m])                         {                                  OK_Count++;          //à&#219;&#188;&#198;êy&#190;Y&#182;&#212;±è&#213;yè·′&#206;êy                                   if(OK_Count>dpi )                                         {                                                 OK_Count=0;                                         }                         }                         else                          {                                  Erro_Count++;        //à&#219;&#188;&#198;êy&#190;Y&#182;&#212;±è′í&#206;ó′&#206;êy                                 if(Erro_Count>dpi )                                         {                                                 Erro_Count=0;                                         }                         }                                  }         printf("OK_Count:    %d ",OK_Count);         printf("Erro_Count:    %d ",Erro_Count);         printf("SUM:    %d ",(OK_Count+Erro_Count));         printf("----------------------------------- ");

一周热门 更多>