OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4330|回复: 3

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

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-7-23
在线时间
5 小时
发表于 2017-7-23 18:35:14 | 显示全部楼层 |阅读模式
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”的警告,且无法正常实现功能。

另外对于图片中的这个数组不是很理解,估计也是导致程序错误的原因。
请教各位大神,该如何解决?
QQ截图20170723183211.png

最佳答案

查看完整内容[请看2#楼]

你直接把数组元素作为DCMI_DMA_Init的参数是不行的,必须给指针。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165359
金钱
165359
注册时间
2010-12-1
在线时间
2110 小时
发表于 2017-7-23 18:35:15 | 显示全部楼层
你直接把数组元素作为DCMI_DMA_Init的参数是不行的,必须给指针。
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-7-23
在线时间
5 小时
 楼主| 发表于 2017-7-24 09:46:30 | 显示全部楼层
正点原子 发表于 2017-7-23 18:35
你直接把数组元素作为DCMI_DMA_Init的参数是不行的,必须给指针。

那该如何添加指针?
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-7-23
在线时间
5 小时
 楼主| 发表于 2017-7-24 10:36:30 | 显示全部楼层
本帖最后由 霍伊宁 于 2017-7-24 10:39 编辑
正点原子 发表于 2017-7-23 18:35
你直接把数组元素作为DCMI_DMA_Init的参数是不行的,必须给指针。

啊,是给数组里的元素加指针?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-12-23 07:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表