Elevator/rknn_yolo_demo/libs/common/drm/include/tool.h

146 lines
5.2 KiB
C
Raw Normal View History

2024-07-28 18:23:29 +08:00
/*
*/
#ifndef TOOL_H_
#define TOOL_H_
//<2F>ڴ˴<DAB4><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD>
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#ifdef __cplusplus
extern "C" {
#endif
#define YUV420 0
#define YUV422 YUV420 + 1
#define YUV444 YUV422 + 1
/*************************************************************
Function: ReadBmpFile
Description: <EFBFBD><EFBFBD>ȡbmpͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
Input: pFilePath<EFBFBD><EFBFBD>bmp<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
pData<EFBFBD><EFBFBD>rgbͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ָ<EFBFBD>rgbͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>Ϊbgrbgr...bgr<EFBFBD><EFBFBD>rgbֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ8bit
width<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
height<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Output: <EFBFBD><EFBFBD>
*************************************************************/
extern void ReadBmpFile(char *pFilePath, unsigned char *pData, int & width, int & height);
/*************************************************************
Function: SaveBmpFile
Description: <EFBFBD><EFBFBD>rgbͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD><EFBFBD>Ϊbmp
Input: pFilePath<EFBFBD><EFBFBD>bmp<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
pData<EFBFBD><EFBFBD>rgbͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ָ<EFBFBD>rgbͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>Ϊbgrbgr...bgr<EFBFBD><EFBFBD>rgbֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ8bit
width<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
height<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Output: <EFBFBD><EFBFBD>
*************************************************************/
extern void SaveBmpFile(char *pFilePath, unsigned char *pData, int width, int height);
/*************************************************************
Function: SaveRaw
Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>rawͼ
Input: pSavePath<EFBFBD><EFBFBD>raw<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
pData<EFBFBD><EFBFBD>raw<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
width<EFBFBD><EFBFBD>rawͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
height<EFBFBD><EFBFBD>rawͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Output: <EFBFBD><EFBFBD>
*************************************************************/
extern void SaveRaw(char *pSavePath, short *pRawData, int width, int height);
extern void SaveRaw32bit(char *pSavePath, long *pRawData, int width, int height);
/*************************************************************
Function: SaveBmpFile2
Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8bit<EFBFBD><EFBFBD>bmpͼ<EFBFBD><EFBFBD>
Input: pFilePath<EFBFBD><EFBFBD>bmp<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
width<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
height<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bitValue<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
pRGBData<EFBFBD><EFBFBD>rgbͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ָ<EFBFBD>rgbͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>Ϊbgrbgr...bgr
Output: <EFBFBD><EFBFBD>
*************************************************************/
extern void SaveBmpFile2(char *pFilePath, int width, int height, int bitValue, short *pRGBData);
/*************************************************************
Function: SaveYUVData
Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>8bit YUVͼ
Input: pSavePath<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
pData<EFBFBD><EFBFBD>yuv<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>8bit<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>yyy...yyyuuu...uuuvvv...vvv
width<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
height<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Output: <EFBFBD><EFBFBD>
*************************************************************/
extern void SaveYUVData(char *pSavePath, unsigned char *pData, int width, int height);
/*************************************************************
Function: SaveYUVData2
Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8bit<EFBFBD><EFBFBD>YUVͼ
Input: pSavePath<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
pData<EFBFBD><EFBFBD>yuv<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8bit<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>yyy...yyyuuu...uuuvvv...vvv
width<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
height<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Output: <EFBFBD><EFBFBD>
*************************************************************/
extern void SaveYUVData2(char *pSavePath, short *pData, int width, int height, int bitValue);
/*************************************************************
Function: SaveYUVData1
Description: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>8bit YUV420ͼ
Input: pSavePath<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
pData<EFBFBD><EFBFBD>yuv<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>8bit<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>yyy...yyyuuu...uuuvvv...vvv
width<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
height<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Output: <EFBFBD><EFBFBD>
*************************************************************/
extern void SaveYUVData1(char *pSavePath, unsigned char *pData, int width, int height, int fmt);
/*************************************************************
Function: ReadYUVData1
Description: <EFBFBD><EFBFBD>ȡ8bit YUV420ͼ
Input: pReadPath<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD>
pData<EFBFBD><EFBFBD>yuv<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>8bit<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>yyy...yyyuuu...uuuvvv...vvv
width<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
height<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Output: <EFBFBD><EFBFBD>
*************************************************************/
extern void ReadYUVData1(char *pReadPath, unsigned char *pData, int width, int height, int fmt);
/*************************************************************
Function: Yuvfmtconv
Description: yuv fmt conversion.444 420 422 to 444 420 422
Input: pDatain <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pDataout <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
width <EFBFBD><EFBFBD>
height <EFBFBD><EFBFBD>
fmt_in <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
fmt_out <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
Output: <EFBFBD><EFBFBD>
*************************************************************/
extern void Yuvfmtconv(void *pDatain, void *pDataout, int width, int height, int fmt_in, int fmt_out, int size);
/*************************************************************
Function: Yuvbitstochar
Description: save yuv to 8 bitdepth
Input: pDatain <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pDataout <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
size yuv<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
height <EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
Output: <EFBFBD><EFBFBD>
*************************************************************/
extern void Yuvbitstochar(short *pDatain, unsigned char *pDataout, int size, int bitdepth);
/*************************************************************
Function: SaveCfaBmp
Description: <EFBFBD><EFBFBD>raw<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cfaͼ<EFBFBD><EFBFBD>
Input: pRawData<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rawͼ<EFBFBD><EFBFBD>
width<EFBFBD><EFBFBD>rawͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
height<EFBFBD><EFBFBD>rawͼ<EFBFBD>ߣ<EFBFBD>
bayerPattern<EFBFBD><EFBFBD>bayer pattern<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>ȡֵ<EFBFBD><EFBFBD>Χ[0<EFBFBD><EFBFBD>3]<EFBFBD><EFBFBD>
bitValue<EFBFBD><EFBFBD>raw<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Output: <EFBFBD><EFBFBD>
*************************************************************/
extern void SaveCfaBmp(char *pFilePath, short *pRawData, int width, int height, int bayerPattern, int bitValue);
#ifdef __cplusplus
}
#endif
#endif // TOOL_H_