关于STM32F429图像采集后二值化的问题

2019-07-20 13:11发布

因为需要把摄像头采集到的图片进行二值化处理,所以我在正点原子STN32F429配套的摄像头实验中插入了一段代码:
DCMI_Init();   
if(lcdltdc.pwidth!=0)
{
  dcmi_rx_callback=rgblcd_dcmi_rx_callback
         DCMI_DMA_Init((u32)dcmi_line_buf[0],(u32)dcmi_line_buf[1],lcddev.width/2,DMA_MDATAALIGN_HALFWORD,DMA_MINC_ENABLE);
}else   
{
        DCMI_DMA_Init((u32)&LCD->LCD_RAM,0,1,DMA_MDATAALIGN_HALFWORD,DMA_MINC_DISABLE);
}
TIM3->CR1&=~(0x01);
if(lcddev.height>800)
{
  yoffset=(lcddev.height-800)/2;
  outputheight=800;
  OV5640_WR_Reg(0x3035,0X51);
}else
{
  yoffset=0;
  outputheight=lcddev.height;
}
curline=yoffset;
OV5640_OutSize_Set(4,0,lcddev.width,outputheight);
DCMI_Start();   
LCD_Clear(BLACK);
while(1)
{   
    LCD_ShowNum(300,460,20000,10,16);
  DCMI_Stop();
  for (i=0;i<jpeg_line_size;i++)
//  for (j=0;j<COLMAX;j++)
    {
     LCD_Color_Fill2(i+jpeg_line_size,1,i+jpeg_line_size,1,dcmi_line_buf[0][jpeg_line_size]>>16);
     color=dcmi_line_buf[0][jpeg_line_size];
       gm_red = (color & 0xF800) >> 8;
       gm_green = (color & 0x07E0) >> 3;
       gm_blue = (color & 0x001F) << 3;
       gray =(gm_red*77+gm_green*150+gm_blue*29+128)/256;     
       gray=gray/8;
       color=(0x001f&gray)<<11;
       color=color|(((0x003f)&(gray*2))<<5);
       color=color|(0x001f&gray);
   if(color>20100)
   {
   
    dcmi_line_buf[1][jpeg_line_size]=0xff;
    LCD_Color_Fill2(i,1,i,1,0xffff);
   }
   else
   {
    m++;
    dcmi_line_buf[1][jpeg_line_size]=0;
    LCD_Color_Fill2(i,1,i,1,0x0000);
   }
  }
}
但在编译之后,出现了“subscript out of range”的警告,且无法正常实现功能。

另外对于图片中的这个数组不是很理解,估计也是导致程序错误的原因。
请教各位大神,该如何解决?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。