栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

RGB到yuv420算法效率

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RGB到yuv420算法效率

展开循环,并摆脱内循环中的if。但是不要对图像数据运行3次,它甚至更快!

void Bitmap2Yuv420p_calc2(uint8_t *destination, uint8_t *rgb, size_t width, size_t height){    size_t image_size = width * height;    size_t upos = image_size;    size_t vpos = upos + upos / 4;    size_t i = 0;    for( size_t line = 0; line < height; ++line )    {        if( !(line % 2) )        { for( size_t x = 0; x < width; x += 2 ) {     uint8_t r = rgb[3 * i];     uint8_t g = rgb[3 * i + 1];     uint8_t b = rgb[3 * i + 2];     destination[i++] = ((66*r + 129*g + 25*b) >> 8) + 16;     destination[upos++] = ((-38*r + -74*g + 112*b) >> 8) + 128;     destination[vpos++] = ((112*r + -94*g + -18*b) >> 8) + 128;     r = rgb[3 * i];     g = rgb[3 * i + 1];     b = rgb[3 * i + 2];     destination[i++] = ((66*r + 129*g + 25*b) >> 8) + 16; }        }        else        { for( size_t x = 0; x < width; x += 1 ) {     uint8_t r = rgb[3 * i];     uint8_t g = rgb[3 * i + 1];     uint8_t b = rgb[3 * i + 2];     destination[i++] = ((66*r + 129*g + 25*b) >> 8) + 16; }        }    }}

在我的测试中,这比您接受的答案快了25%(VS 2010,取决于启用了x86还是x64。)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418422.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号