s3c2440camera的使用
来源:互联网 发布:网络信息发布审核制度 编辑:程序博客网 时间:2024/06/05 09:59
最近项目中使用到ov9650的摄像头,但是原驱动是个简单字符设备,不支持ioctl切换编码方式和分辨率。
驱动中默认是用的是 p通道,即预览通道,支持的最发分辨率为640*512. 如果强行修改参数,最后的结果是系统停止响应,抓取的图片也是不完整的.
但是ov9650物理器件上支持130万像素,则原驱动并没有发挥其的最大性能,所以果断的只能修改驱动了。
让其支持通过c通道输出,其支持的分辨率为4096*4096,这下对于1280*1024来说,就足够用了。
驱动,国外有团体已经改写成支持v4l2 形式的驱动了。连接地址http://code.google.com/p/s3c2440camera/downloads/list
我是下载源码后编译的。编译过程中遇到的是小麻烦,倒是不怎么费时间。
其中包含测试代码,我就是根据测试代码进行修改的。 测试代码中把Y部分和uv部分分开存储了,其实写入一个文件就正好。
图像编码这一块,只识得rgb,对yuv并没有太多的了解,了解到yuv444,yuv420等等,还有打包模式..
自己去实践一下,很快就能理解了。
图像采集的默认输出格式也说了,是yuv422p。
在文件s3c2440cammif.c 中的代码 赋值 pcam->v2f.fmt.pix.pixelformat= V4L2_PIX_FMT_YUV42P.
下面的连接时对宏定义说明的比较清楚。
http://lxr.free-electrons.com/source/include/uapi/linux/videodev2.h#L327
320 #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */321 #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */322 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */323 #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */324 #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */325 #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */326 #define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16 YUV 4:2:2 */327 #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */328 #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 16 YVU411 planar */329 #define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P') /* 12 YUV 4:1:1 */
那UV 在前还是在后?
http://blog.csdn.net/jmq_0000/article/details/7536805#V4L2-PIX-FMT-YUV422P
这篇链接里清清楚楚的说明了其定义
- V4L2_PIX_FMT_YUV422P ('422P') -- Format with ½ horizontal chroma resolution,also known as YUV 4:2:2. Planar layout as opposed to
V4L2_PIX_FMT_YUYV
自己的测试代码中用到jpeglib库(修改过的,网络上很多,支持从内存中存储图片为jpg形式),这样就可以直接从摄像头中读取数据然后转存成jpg查看了。yuv格式查看是相当的不方便,好不容易搜到一个软件,也是试用期已过的。还是在自己的代码中转吧。
yuv转rgb转换方式网络上也很多。不知道yuv能不能直接存储为jpg图像,我这里是先转换成rgb,然后再存储为jpg的。
最后效果能够出来了,图片也比较清晰,毕竟是1280*1024的,不过底色是绿色的,这个就让我比较纳闷了。
不知道哪里还有问题,等待继续修改了。
- s3c2440camera的使用
- S3C2440Camera驱动调试笔记
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- Makefile中使用$$的使用
- Makefile中使用$$的使用
- Red5的使用--使用日志
- prefernce的使用具体使用
- 【工具使用】git 的使用
- 关于使用AsyncTaskLoader的使用
- 使用CABasicAnimation的基本使用
- 使用RocketMQ的客户端使用
- socket通信简介
- Android 开发之 ---- 底层驱动开发(二)
- 编写你的第一个垃圾收集器
- Java核心编程十二:国际化
- jquery ajax跨域请求webservice webconfig配置
- s3c2440camera的使用
- 3、Info.plist文件介绍-OC+UI
- Android 开发之 ---- 底层驱动开发(一)
- OpenERP7.0 Domain条件表达式写法小结
- 编程面试的10大算法概念汇总
- Java核心编程十三:注解
- C#中的结构体与类的区别
- 用MapReduce做相似度分析
- 会声会影(VideoStudio Pro X6)安装了现错误-9解决方法