void RGBto422 (unsigned char *rgb, unsigned char *yuv, int width, int
height)
{
int r, g, b, Y1, Cb1, Cr1, Y2, Cb2, Cr2, x, y;
for(y = 0; y<height; y++)
for(x = 0; x < width; x += 2) {
r = *rgb++;
g = *rgb++;
b = *rgb++;
Y1 = 0.2989 * r + 0.5866 * g + 0.1145 * b;
Cb1 = (b - Y1) / (2. - 2. * 0.1145);
Cr1 = (r - Y1) / (2. - 2. * 0.2989);
r = *rgb++;
g = *rgb++;
b = *rgb++;
Y2 = 0.2989 * r + 0.5866 * g + 0.1145 * b;
Cb2 = (b - Y2) / (2. - 2. * 0.1145);
Cr2 = (r - Y2) / (2. - 2. * 0.2989);
*yuv++ = (unsigned char) (128 + (Cb1 + Cb2) / 2) * 224./255.+ 16;
*yuv++ = (unsigned char) Y1 * 219./255/ + 16;
*yuv++ = (unsigned char) (128 + (Cr1 + Cr2) / 2) * 224./255.+ 16;
*yuv++ = (unsigned char) Y2 * 219./255/ + 16;
}
}
//a nd for completeness 411:
void RGBto420 (unsigned char *rgb, unsigned char *yuv, int width, int
height)
{
int r, g, b, Y1, Cb1, Cr1, Y2, Cb2, Cr2, Y3, Cb3, Cr3, Y4, Cb4, Cr4,
x, y;
for(y = 0; y<height; y += 2)
for(x = 0; x < width; x += 2) {
r = *rgb;
g = *(rgb+1);
b = *(rgb+2);
Y1 = 0.2989 * r + 0.5866 * g + 0.1145 * b;
Cb1 = (b - Y1) / (2. - 2. * 0.1145);
Cr1 = (r - Y1) / (2. - 2. * 0.2989);
r = *(rgb+3);
g = *(rgb+4);
b = *(rgb+5);
Y2 = 0.2989 * r + 0.5866 * g + 0.1145 * b;
Cb2 = (b - Y2) / (2. - 2. * 0.1145);
Cr2 = (r - Y2) / (2. - 2. * 0.2989);
r = *(rgb+3*width);
g = *(rgb+3*width+1);
b = *(rgb+3*width+2);
Y3 = 0.2989 * r + 0.5866 * g + 0.1145 * b;
Cb3 = (b - Y3) / (2. - 2. * 0.1145);
Cr3 = (r - Y3) / (2. - 2. * 0.2989);
r = *(rgb+3*width+3);
g = *(rgb+3*width+4);
b = *(rgb+3*width+5);
Y4 = 0.2989 * r + 0.5866 * g + 0.1145 * b;
Cb4 = (b - Y4) / (2. - 2. * 0.1145);
Cr4 = (r - Y4) / (2. - 2. * 0.2989);
*yuv++ = (unsigned char) Y1 * 219./255/ + 16;
*yuv++ = (unsigned char) Y2 * 219./255/ + 16;
*yuv++ = (unsigned char) Y3 * 219./255/ + 16;
*yuv++ = (unsigned char) Y4 * 219./255/ + 16;
*yuv++ = (unsigned char) (128 + (Cb1 + Cb2 + Cb3 + Cb4) / 4) * 224./255. + 16;
*yuv++ = (unsigned char) (128 + (Cr1 + Cr2 + Cr3 + Cr4) / 4) * 224./255. + 16;
rgb += 6;
}
}
void RGBto411 (unsigned char *rgb, unsigned char *yuv, int width, int
height)
{
int r, g, b, Y1, Cb1, Cr1, Y2, Cb2, Cr2, Y3, Cb3, Cr3, Y4, Cb4, Cr4,
x, y;
for(y = 0; y<height; y++)
for(x = 0; x < width; x += 4) {
r = *rgb++;
g = *rgb++;
b = *rgb++;
Y1 = 0.2989 * r + 0.5866 * g + 0.1145 * b;
Cb1 = (b - Y1) / (2. - 2. * 0.1145);
Cr1 = (r - Y1) / (2. - 2. * 0.2989);
r = *rgb++;
g = *rgb++;
b = *rgb++;
Y2 = 0.2989 * r + 0.5866 * g + 0.1145 * b;
Cb2 = (b - Y2) / (2. - 2. * 0.1145);
Cr2 = (r - Y2) / (2. - 2. * 0.2989);
r = *rgb++;
g = *rgb++;
b = *rgb++;
Y3 = 0.2989 * r + 0.5866 * g + 0.1145 * b;
Cb3 = (b - Y3) / (2. - 2. * 0.1145);
Cr3 = (r - Y3) / (2. - 2. * 0.2989);
r = *rgb++;
g = *rgb++;
b = *rgb++;
Y4 = 0.2989 * r + 0.5866 * g + 0.1145 * b;
Cb4 = (b - Y4) / (2. - 2. * 0.1145);
Cr4 = (r - Y4) / (2. - 2. * 0.2989);
*yuv++ = (unsigned char) Y1 * 219./255/ + 16;
*yuv++ = (unsigned char) Y2 * 219./255/ + 16;
*yuv++ = (unsigned char) Y3 * 219./255/ + 16;
*yuv++ = (unsigned char) Y4 * 219./255/ + 16;
*yuv++ = (unsigned char) (128 + (Cb1 + Cb2 + Cb3 + Cb4) / 4) * 224./255. + 16;
*yuv++ = (unsigned char) (128 + (Cr1 + Cr2 + Cr3 + Cr4) / 4) * 224./255. + 16;
}
}

刘良运
- 粉丝: 81
- 资源: 1万+
最新资源
- 管家婆辉煌食品版TOP+13.3
- COMSOL多孔介质流燃烧器模型:四场耦合仿真,精准模拟多种气体燃烧流动,高EI准确性与收敛性,COMSOL多孔介质流燃烧器模型:四场耦合仿真,高精度模拟燃烧流动耦合结果,涵盖多种气体,EI级准确性与
- libtorch CPU版本安装包:libtorch-win-shared-with-deps-2.6.0+cpu.zip
- 基于MATLAB的塞曼效应与法布里-珀罗干涉仪(F-P)标准具模拟系统:平面波、球面波分布子函数生成与数值模拟分析,基于MATLAB的塞曼效应与法布里-珀罗干涉仪(F-P)模拟系统:平面波与球面波分布
- 2021年美赛D题.zip
- 基于模糊聚类算法的水质检测报告:程序化数据分析与应用实践,基于模糊聚类算法的水质检测报告:数据分析与程序实现 ,基于模糊聚类算法的水质检测数据分析 报告+数据+程序 ,基于模糊聚类算法; 水质检测数
- Python爬虫技术的基础理论与关键知识点全解析
- 《TypeScript 中的 Exercism 练习》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- 融合A*算法优化RRT路径规划算法的仿真研究:全局路径规划与RRT算法原理详解,基于A*算法优化的RRT路径规划代码仿真:全局路径快速规划原理,融合A*改进RRT算法的路径规划代码仿真 全局路径规划
- 《令人愉快的 JavaScript 测试》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- 基于新英格兰10机39节点系统的风机并网与频率控制研究:虚拟同步与减载控制深度探讨,基于新英格兰与IEEE节点系统的风机并网频率控制与虚拟同步机研究,新英格兰10机39节点 IEEE 39节点 调
- 管家婆辉煌食品版TOP+13.32
- 《练习 “真实” SQL 问题》(毕业设计,源码,教程)简单部署即可运行 功能完善、操作简单,适合毕设或课程设计.zip
- 基于遗传算法的带充电桩电动汽车路径规划问题研究:考虑软时间窗、时间窗惩罚、多目标点及充电功能的多层次优化,基于遗传算法的电动汽车路径规划与充电策略研究:软时间窗、多目标点与时间窗惩罚的VRPTW问题求
- 基于JavaFX图形化界面的井字棋游戏设计与实现
- 管家婆辉煌食品版TOP15.0
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



评论0