ov9650 实时显示app 平台:i.mx6ul linux 3.14.38

news/2024/10/18 18:14:18/

本文先简单记录:

1.ov9650采集 摄像头输出yuyv格式

2.写入到framebuffer显示

3.贴yuv2rgb.c的代码如下:

tips: 查表法/bpp=32  table略

void yuv2rgb(unsigned char *pyuv,unsigned char *prgb,int width, int height)
{
        unsigned char *py = pyuv;
        //unsigned short *pb = prgb;
        unsigned char *pb = prgb;
        unsigned int y1,u,y2,v;
        int rdif, invgdif, bdif;
        int  r = 0,g = 0,b = 0;
        int x,y;
        for(y = 0; y < height; y++){
                        for(x = 0; x < width; x += 2){


                                        y1 = *py++ ;
                                        u = *py++ ;
                                        y2 = *py++ ;
                                        v = *py++;


                                        rdif = Table_fv1[v];
                                        invgdif = Table_fu1[u] + Table_fv2[v];
                                        bdif = Table_fu2[u];


                                        r = y1 + rdif;
                                        g = y1 - invgdif;
                                        b = y1 + bdif;
                                        r = (r > 255)?255:(r < 0)?0:r;
                                        g = (g > 255)?255:(g < 0)?0:g;
                                        b = (b > 255)?255:(b < 0)?0:b;
                                        //pb[x+0] = b;
                                        //pb[x+1] = g;
                                        //pb[x+2] = r;
                                        //pb[x+3] = 0;

                                        *pb++ = b;

                                        *pb++ = g;
                                        *pb++ = r;
                                        *pb++ = 0;
                                        //*pb++ = 0;
                                        //*pb++ = 0;
                                        //*pb++ = 200;
                                        //*pb++ = 0;


                                        //*pb++ = ((r >> 3)  << 11) | ((g >> 2) << 5) | (b >> 3) ;


                                        r = y2 + rdif;
                                        g = y2 - invgdif;
                                        b = y2 + bdif;


                                        r = (r > 255)?255:(r < 0)?0:r;
                                        g = (g > 255)?255:(g < 0)?0:g;
                                        b = (b > 255)?255:(b < 0)?0:b;
                                        //pb[x+4] = b;
                                        //pb[x+5] = g;
                                        //pb[x+6] = r;
                                        //pb[x+7] = 0;
                                        *pb++ = b;
                                        *pb++ = g;
                                        *pb++ = r;
                                        *pb++ = 0;


                                        //*pb++ = ((r >> 3)  << 11) | ((g >> 2) << 5) | (b >> 3);
                        }
                        pb = prgb + 800 * 4 * y;

        }

同样也可以用移位去计算rgb:(像素编码)

unsigned int *pb = prgb;

*pb++ = (r << 16) | ((g << 8) | b;


http://www.ppmy.cn/news/152477.html

相关文章

ov9650摄像头驱动之——linux内核v4l2架构分析3

NO.3 V4L2的API和数据结构 V4L2是V4L的升级版本&#xff0c;为linux下视频设备程序提供了一套接口规范。包括一套数据结构和底层V4L2驱动接口。 1、常用的结构体在内核目录include/linux/videodev2.h中定义 struct v4l2_requestbuffers //申请帧缓冲&#xff0c;对应命令VIDIOC…

ov9650 的配置

经过4天的调试摄像头终于可以拍照片保存到电脑上来&#xff0c;ov9650的调试走了不少弯路&#xff0c;一些教训总结如下&#xff1a; 1:OV9650是OmniVision公司的COMS摄像头&#xff0c;号称有130万像素&#xff0c;但是实际效果感觉不如CCD的&#xff0c;特别是远处的背景更糟…

基于mini2440的ov9650摄像头裸机测试

mini2440提供了一个摄像头接口&#xff0c;可以输出RGB24,RGB16的原始图像还可以输出编码的如YUV格式的图像&#xff0c;并提供了偏移翻转&#xff0c;放大缩小的功能。与开发板配套的摄像头模块为CAM130,采用ov9650的芯片。操作摄像头接口实现视频的采集与显示&#xff0c;主要…

ov9650学习(2)

已经在2.6.24的内核将飞凌公司提供的ov9650的驱动和测试源码运行成功&#xff0c;不过之前那个天嵌提供的驱动和测试程序还没调通&#xff0c;先mark一下吧。 10月8号更新了第3篇文章实现了解决了很多第1,2篇中的问题&#xff1a;http://blog.csdn.net/liuzijiang1123/article…

ov9650驱动分析

OV9650驱动程序跟踪 (2012-05-31 11:11:48) 转载▼ 标签&#xff1a; 杂谈分类&#xff1a; LINUX 学习了裸机OV9650的P通道LCD直接显示程序&#xff0c;作为这点基础开始分析OV9650在linux设备驱动程序。 我们跟踪程序按照常规方法&#xff0c;跟着驱动的编写脉络去读程序。 …

OV9650驱动程序跟踪分析

原文出自http://blog.csdn.net/mirkerson/article/details/8170227 学习了裸机OV9650的P通道LCD直接显示程序&#xff0c;作为这点基础开始分析OV9650在linux设备驱动程序。 我们跟踪程序按照常规方法&#xff0c;跟着驱动的编写脉络去读程序。 1、在程序中找到程序入口函数——…

ov9650学习(1)

前言&#xff1a;对于ov9650的学习做一个记录&#xff0c;目标是在我的fl2440的板子上移植ov9650的驱动并实现在lcd上显示摄像头拍摄的内容&#xff0c;虽然最后还是花屏&#xff0c;但是还需要做一个记录&#xff0c;记下自己学习到的一点东西。希望发到网上然后得到广大网友的…

TQ2440实验板OV9650测试程序的详解

我买的是TQ2440实验板&#xff0c;LCD是480*272。实验板给的测试程序是针对320x240的&#xff0c;下面给出详细注解&#xff0c;并且改成480*272显示。修改后的程序在板子上成功运行。 程序中的注解只是我作为一个初学者的角度来理解的&#xff0c;有什么不对的地方还望指教。…