新手上路
- 积分
- 32
- 金钱
- 32
- 注册时间
- 2017-7-23
- 在线时间
- 5 小时
|
1金钱
因为需要把摄像头采集到的图片进行二值化处理,所以我在正点原子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”的警告,且无法正常实现功能。
另外对于图片中的这个数组不是很理解,估计也是导致程序错误的原因。
请教各位大神,该如何解决?
|
-
|