📄 rgb2yuv444.c
字号:
#include <config.h>#if defined(CONFIG_HI3510_LOGO)#include "hi_inc.h"#include "hi_common/hi.h"/*globe variable*/ UINT32 imgWidth; UINT32 imgHeight;/****************//*memory copy and change the dst address*/UINT8* memcpyTbb ( UINT8 *pDst, UINT8 *pSrc, UINT32 length){ while (length--) *pDst++ = *pSrc++; return pDst;} // 获取图像数据 void GetBMDataFromBuff(IN UINT8 * pSrc, OUT UINT8 *pBuff) { UINT8 lineSize = 0; int i = 0; pSrc += 54; lineSize = imgWidth * 3; for (i = imgHeight- 1; i >= 0; --i) { pBuff = memcpyTbb(pBuff,&(pSrc[imgWidth * i * 3]),lineSize); } } // 转换色彩空间BGR-YUV,111采样 void BGR2YUV111(UINT8* pBuf, UINT8* pDst) { double tmpY = 0; double tmpU = 0; double tmpV = 0; UINT8 tmpB = 0; UINT8 tmpG = 0; UINT8 tmpR = 0; UINT32 i = 0; UINT32 elemNum = imgHeight * imgWidth; for (i = 0; i < elemNum; i++) { tmpB = *pBuf++; tmpG = *pBuf++; tmpR = *pBuf++; tmpY = 0.299 * tmpR + 0.587 * tmpG + 0.114 * tmpB; tmpU = -0.1687 * tmpR - 0.3313 * tmpG + 0.5 * tmpB + 128; tmpV = 0.5 * tmpR - 0.4187 * tmpG - 0.0813 * tmpB + 128; if(tmpY > 255){tmpY = 255;} if(tmpU > 255){tmpU = 255;} if(tmpV > 255){tmpV = 255;} if(tmpY < 0){tmpY = 0;} if(tmpU < 0){tmpU = 0;} if(tmpV < 0){tmpV = 0;} *pDst++ = (UINT8)tmpY; *pDst++ = (UINT8)tmpU; *pDst++ = (UINT8)tmpV; } } void YUV2JPEG444 ( UINT8 *pSrc, UINT8 *pDst, UINT8 *pMiddle, UINT16 height,UINT16 width){ imgWidth = width; imgHeight = height; GetBMDataFromBuff(pSrc, pMiddle); BGR2YUV111(pMiddle,pDst);}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -