我写好了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重新编辑 ]