主题 : 怎么让摄像头采集的图像显示到LCD屏上啊? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 46795
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2011-05-16
最后登录: 2011-06-30
楼主  发表于: 2011-06-01 12:57

 怎么让摄像头采集的图像显示到LCD屏上啊?

我写好了CMOS摄像头应用,能采集到图像并保存为BMP图片,现在我想让LCD实时显示摄像头采集的图像,我把映射好的摄像头地址赋给LCD的framebuffer但是不能显

    fbdev.fb_mem = mmap (NULL, fbdev.fb_size, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0);
    if (fbdev.fb_mem == NULL || (int) fbdev.fb_mem == -1)
    {
        fbdev.fb_mem = NULL;
        printf("mmap failed.\n");
        close(fb);
        return -1;
    }
    fbdev.fb = fb;
    memset (fbdev.fb_mem, 0x0, fbdev.fb_size);
    return 0;
}
我打开的framebuffer,
我的摄像头映射
memset(&buffer, 0, sizeof(buffer));
                
      buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
      buffer.memory = V4L2_MEMORY_MMAP;
      buffer.index = n_buffers;
                
      if (-1 == ioctl(dev_fd,VIDIOC_QUERYBUF,&buffer)) {
              printf( "get   buffer   info   error\n ");
          }
      buffers[n_buffers].length = buffer.length;
      buffers[n_buffers].start = mmap(
                 NULL,
                 buffer.length,
                 PROT_READ|PROT_WRITE,
                 MAP_SHARED,
                 dev_fd,
                 buffer.m.offset);
采集加显示到LCD上
memset(&buffer, 0, sizeof(buffer));
         buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
         buffer.memory = V4L2_MEMORY_MMAP;
         if (-1 == ioctl(dev_fd, VIDIOC_QBUF, &buffer)) {  
             printf( "dequeue   buffer   error\n ");/*get   the   captured   buffer*/
         }    
         /*handle   the   frame*/
        
        fbdev.fb_mem = buffers[buffer.index].start;
            
        if (-1 == ioctl(dev_fd, VIDIOC_DQBUF, &buffer)) {
            printf( "queue   buffer   error\n ");
        }    

但是LCD上不显示东西
[ 此帖被jery0711在2011-06-02 15:38重新编辑 ]
级别: 新手上路
UID: 14786
精华: 0
发帖: 12
金钱: 60 两
威望: 12 点
综合积分: 24 分
注册时间: 2010-02-22
最后登录: 2018-02-26
1楼  发表于: 2011-07-26 11:56
加个QQ吧,我也在做这个。214790888