当前位置: 技术问答>linux和unix
关于linux下摄像头的图像采集问题
来源: 互联网 发布时间:2017-01-26
本文导语: 刚接触linux,买了一个ARM开发板,想采集图像,用QT显示。厂家提供了一个源码,基本步骤就是: 1、打开/dev/video0 2、打开framebuffer 3、直接read摄像头文件(char[320*240*2]),把数据读取的数据拷贝到framebuffer,完成显示...
刚接触linux,买了一个ARM开发板,想采集图像,用QT显示。厂家提供了一个源码,基本步骤就是:
1、打开/dev/video0
2、打开framebuffer
3、直接read摄像头文件(char[320*240*2]),把数据读取的数据拷贝到framebuffer,完成显示。
问题:
1、这时用read()读取的数据是不是只是像素,不能算图像?我在把它存为QImage后,显示出来的是一片黑(QT有没有直接显示这种数据的方法)。
2、如果只是像素,那想存成图片,比如bmp格式,要如何操作呢?
3、如果用v4l2,设置fmt.fmt.pix.pixelformat=V4L2_PIX_FMT_RGB32之类的,得到的是否就是完整的图像了?
4、驱动好像支持v4l2,我说“好像”是因为,ioctl(fd,V4L2_QUERYCAP,&cap)及ioctl(fd,V4L2_ENUMINPUT,&input)时,能成功返回。其它的返回值全是-1。结果是没法设置图片格式,甚至是不支持i/o读取,也不支持内存映射。是不是ioctl返回-1,也能用v4l2啊?这部分很模糊。
希望高手不吝赐教!
(分绝对不是问题,可以加,我关心的是答案。)
1、打开/dev/video0
2、打开framebuffer
3、直接read摄像头文件(char[320*240*2]),把数据读取的数据拷贝到framebuffer,完成显示。
问题:
1、这时用read()读取的数据是不是只是像素,不能算图像?我在把它存为QImage后,显示出来的是一片黑(QT有没有直接显示这种数据的方法)。
2、如果只是像素,那想存成图片,比如bmp格式,要如何操作呢?
3、如果用v4l2,设置fmt.fmt.pix.pixelformat=V4L2_PIX_FMT_RGB32之类的,得到的是否就是完整的图像了?
4、驱动好像支持v4l2,我说“好像”是因为,ioctl(fd,V4L2_QUERYCAP,&cap)及ioctl(fd,V4L2_ENUMINPUT,&input)时,能成功返回。其它的返回值全是-1。结果是没法设置图片格式,甚至是不支持i/o读取,也不支持内存映射。是不是ioctl返回-1,也能用v4l2啊?这部分很模糊。
希望高手不吝赐教!
(分绝对不是问题,可以加,我关心的是答案。)
|
为什么要加 bmp 头再显示呢 ?
直接画在 framebuffer 上就能显示了啊 ,坐标也是可调的。
直接加上 bmp 头,再用 QImage 显示也是可以的,
但效率就比直接显示低了很多。不合适。
直接画在 framebuffer 上就能显示了啊 ,坐标也是可调的。
直接加上 bmp 头,再用 QImage 显示也是可以的,
但效率就比直接显示低了很多。不合适。
|
我以前做过 根据图像采集卡sdk 进行2次开发。
那图像卡采集出来的直接就是BMP图象,楼主可以研究一下bmp图像头,还是很简单的,比对一下就明白鸟!
PS: 俺也喜欢挫挫的灰太郎!
|
GTK中可以gdk_draw_rgb_image直接绘制像素到屏幕上,不用组织图片格式,在QT中应该也有类似的函数,因为都是封装X11
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。