关于YUV的C++编程,应该对Y U V分别如何赋值才能出现黑色?

yuyuyeye2010 2013-05-01 12:19:18
一开始有这样的定义:
unsigned char y[WIDTH*HEIGHT];
unsigned char cb[WIDTH*HEIGHT/4];
unsigned char cr[WIDTH*HEIGHT/4];
之后有这样的运用:
fread(y, Width*Height, 1, fp);
fread(cb, Width*Height/4, 1, fp);
fread(cr, Width*Height/4, 1, fp);
我想在最后结果显示出黑色,是这样赋值的:
unsigned char blacky[WIDTH*HEIGHT]={0x00};
unsigned char blackcb[WIDTH*HEIGHT/4]={0x80};
unsigned char blackcr[WIDTH*HEIGHT/4]={0x80};
for(int b=0;b<WIDTH*HEIGHT;b++) y[b]=blacky[b];
for(int c=0;c<WIDTH*HEIGHT/4;c++)
{
cb[c]=blackcb[c];
cr[c]=blackcr[c];
}
为什么无论我怎么改blacky它们三个数组的值,最后屏幕只会出现绿色?我应该怎么赋值??
...全文
755 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyong 2013-05-02
  • 打赏
  • 举报
回复
YUV 与 RGB 的转换公式: \begin{array}{rll} Y &= 0.299 * R + 0.587 * G + 0.114 * B \\ U &= 0.436 * (B - Y) / (1 - 0.114) + 128 \\ V &= 0.615 * (R - Y) / (1 - 0.299) + 128 \end{array} U 和 V 元件可以被表示成原始的 R、 G,和 B: \begin{array}{rll} Y &= 0.299 * R + 0.587 * G + 0.114 * B \\ U &= -0.169 * R - 0.331 * G + 0.5 * B + 128 \\ V &= 0.5 * R - 0.419 * G - 0.081 * B + 128 \end{array} http://zh.wikipedia.org/zh-cn/YUV
yuyuyeye2010 2013-05-01
  • 打赏
  • 举报
回复
求高人!本人菜鸟级都不如!
zhaokai115 2013-05-01
  • 打赏
  • 举报
回复
我也不太懂,但是我猜可以把黑色对应的RGB(0,0,0)转成YCbCr再用
yuyuyeye2010 2013-05-01
  • 打赏
  • 举报
回复
引用 4 楼 qq120848369 的回复:
memset
试过了,好像不是由于这个原因。。。。那是为何?
qq120848369 2013-05-01
  • 打赏
  • 举报
回复
memset
yuyuyeye2010 2013-05-01
  • 打赏
  • 举报
回复
引用 2 楼 qq120848369 的回复:
unsigned char blacky[WIDTH*HEIGHT]={0x00}; unsigned char blackcb[WIDTH*HEIGHT/4]={0x80}; unsigned char blackcr[WIDTH*HEIGHT/4]={0x80}; 这个数组初始化除了第一个元素被赋值,后续元素都是0.
那要怎么对整个数组赋相同的值呢?
qq120848369 2013-05-01
  • 打赏
  • 举报
回复
unsigned char blacky[WIDTH*HEIGHT]={0x00}; unsigned char blackcb[WIDTH*HEIGHT/4]={0x80}; unsigned char blackcr[WIDTH*HEIGHT/4]={0x80}; 这个数组初始化除了第一个元素被赋值,后续元素都是0.

65,184

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧