MyFPGA Forum

 找回密码
 注册
搜索
查看: 6976|回复: 9
打印 上一主题 下一主题

DE0+D5M采集的像素数据送给nios处理

[复制链接]
跳转到指定楼层
1#
发表于 2010-8-14 09:25:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DE0+D5M采集的像素数据送给NIOS处理之后,再存储到sd卡。NIOS处理的是RGB格式数据,打包为bmp存储到sd卡。请问下面这个情况是什么原因引起的,谢谢!!!

00.jpg (881.38 KB, 下载次数: 574)

00.jpg
2#
 楼主| 发表于 2010-8-14 13:43:57 | 只看该作者
有谁做过VGA呢?这个会不会是送给NIOS的数据,这些数据高低位放置错误而导致bmp数据打包出问题?当我挡住摄像头光的时候,读出来的图片是全黑的,没问题。
3#
发表于 2010-8-15 21:02:02 | 只看该作者
你写的图像数据有问题
4#
发表于 2010-8-15 21:06:29 | 只看该作者
你可以把你的nios中的谢数据那块贴出来,才能知道你写的什么问题,如果摄像头过来的数据没有问题的话,就试试先不用摄像头,谢谢简单的的试试。
5#
 楼主| 发表于 2010-8-15 21:48:16 | 只看该作者
回复 4# chenhaifeichina


    #define DATA_OFFSET 54

alt_u8 header[54] = {
  0x42,        // identity : B
  0x4d,        // identity : M
  0, 0, 0, 0,  // file size
  0, 0,        // reserved1
  0, 0,        // reserved2
  54, 0, 0, 0, // RGB data offset
  40, 0, 0, 0, // struct BITMAPINFOHEADER size
  0, 0, 0, 0,  // bmp width
  0, 0, 0, 0,  // bmp height
  1, 0,        // planes
  24, 0,       // bit per pixel
  0, 0, 0, 0,  // compression
  0, 0, 0, 0,  // data size
  0, 0, 0, 0,  // h resolution
  0, 0, 0, 0,  // v resolution
  0, 0, 0, 0,  // used colors
  0, 0, 0, 0   // important colors
};

alt_u16 WIDTH =480;
alt_u16 HEIGHT =340;
int main()
{
    int i, j,q;
    unsigned char  image[489600];  // image array 800 * 400 * 3 = 960000
    alt_u16 size;      // file size
    alt_u16 read_data1;
    alt_u8  r, g, b;
    FATFS fs;
    FIL  file;     //file objects//
    UINT bw;   //File R/W count//  

    static void delay(int n)
{
    int i ;
    for(i=0;i<n;i++);
   
}
IOWR_ALTERA_AVALON_PIO_DATA(CLOCK_BASE,0);
  for(j = 0; j < HEIGHT; j++) {
    for(i = 0; i < WIDTH; i++) {  
       IOWR_ALTERA_AVALON_PIO_DATA(CLOCK_BASE,1);
       delay(50);
       IOWR_ALTERA_AVALON_PIO_DATA(CLOCK_BASE,0);
       delay(3);
       read_data1= IORD_ALTERA_AVALON_PIO_DATA(DATA_A_BASE);   
        
      r = ((read_data1 & 0xf800) >>8);
      g = ((read_data1 & 0x07e0) >>2);
      b = ((read_data1 & 0x001f) <<3);
      
      *(image + 3 * (WIDTH * j + i) + 0) = b;  // B
      *(image + 3 * (WIDTH * j + i) + 1) = g;  // G
      *(image + 3 * (WIDTH * j + i) + 2) = r;  // R
    }
  }
  // file size  
  size = WIDTH * HEIGHT * 3 + DATA_OFFSET;
  header[2] = (alt_u8)(size & 0x000000ff);
  header[3] = (size >> 8 ) & 0x000000ff;
  header[4] = (size >> 16) & 0x000000ff;
  header[5] = (size >> 24) & 0x000000ff;  
  // width
  header[18] = WIDTH            & 0x000000ff;
  header[19] = (WIDTH    >> 8 ) & 0x000000ff;
  header[20] = (WIDTH    >> 16) & 0x000000ff;
  header[21] = (WIDTH    >> 24) & 0x000000ff;
  // height
  header[22] = HEIGHT           & 0x000000ff;
  header[23] = (HEIGHT   >> 8 ) & 0x000000ff;
  header[24] = (HEIGHT   >> 16) & 0x000000ff;
  header[25] = (HEIGHT   >> 24) & 0x000000ff;  
}
这个就是16位rgb打包为bmp代码,高手的进来都指导指导下啊。
6#
 楼主| 发表于 2010-8-16 11:44:13 | 只看该作者
问题搞定了
7#
发表于 2010-9-17 10:02:53 | 只看该作者
怎么搞定的?我也出现这种问题
8#
发表于 2010-10-9 11:03:54 | 只看该作者
什么问题影响的,分享一下呗
9#
发表于 2010-12-22 15:22:32 | 只看该作者
透露一下,大家一起进步多好!
10#
发表于 2011-7-20 10:14:35 | 只看该作者
我也是这样的情况,请问怎么解决的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|MyFPGA

GMT+8, 2024-5-8 00:11 , Processed in 0.071902 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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