当前位置: 代码迷 >> 驱动开发 >> s3c2440的c通道yuv转rgb解决方法
  详细解决方案

s3c2440的c通道yuv转rgb解决方法

热度:58   发布时间:2016-04-28 10:35:16.0
s3c2440的c通道yuv转rgb

大手给看看这个用r0 = 1402*(cr0-128)/1000+y0;g0 = (- 344*(cb0-128) - 714*(cr0-128))/1000+y0;b0 = 1772*(cb0-128)/1000+y0;转换完得到的实时图像,这是什么原因引起的?
------解决方案--------------------
1.yuv有n多种格式
 采样: 4:4:4   4:2:2 4:2:0 4:1:1 
 排列:YVYU UYVY YV12 打包 等务必确定原始的数组是什么样的格式
   yuv色彩空间: https://zh.wikipedia.org/zh/YUV
2.rbg 也有N多种 ;24位 16色 32色 等
3. LED可能只支持某些rbg格式

我之前有过是 yuyv格式的原始数据(摄像头) 转化成为 RBG24位.
最好是早某一点(4点) 按位(字节)查看,一次找出 y u v的值,看颜色对不对,再找出转换后的值,再对比颜色是否正确.
------解决方案--------------------
9650配置输出422还是420?
------解决方案--------------------
好吧,我以前做过的是 原始数据yuv的,lcd只支持rgb16的.还和排列的顺序有关.
建议弄张纯色的图片试试,先确定到底在那个环节出错了.
尽量想办法屏蔽掉其他环节的影响.打印一下每个步骤的某几个像素的值(RGB YUV)才好判断.
引用:
我配置的lcd的16位显示,比例是4:2:2的,dma把我摄像头9650的数据存储到了ram,我用摄像头的中断读出来转换成rgb的数据显示的!C# code?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585……

------解决方案--------------------
建议这样调试下:
都减128显然不合适,如果cr0<128,就变负了,不减试一下
你的lcd是16位,为什么Conv_YCbCr_Rgb返回U32?
显示一张图片,看下LCD驱动是否正确。
把cr0,cb0都设置为0,看下黑白图像效果。
把cr0,cb0互换,看是否二者搞反了。
  相关解决方案