函数申明为
void __stdcall ConvertBayer2Rgb(BYTE *pDest,BYTE *pSrce, int nWid,int nHei,HV_BAYER_CONVERT_TYPE cvtype,BYTE* pLutR,BYTE* pLutG, BYTE* pLutB,bool bFlip,HV_BAYER_LAYOUT Layout);
参数
/*
\brief bayer图像转换成RGB图像函数
\param pDest [out]数据输出buffer指针(24位RGB图像)
\param pSrce [in]数据输入buffer指针(8位Raw图像)
\param nWid [in]图像宽
\param nHei [in]图像高
\param cvtype [in]插值算法类型
\param pLutR [in]R分量数字增益查找表
\param pLutG [in]G分量数字增益查找表
\param pLutB [in]B分量数字增益查找表
\param bFlip [in]图像翻转标记 true:翻转 false:不翻转
\param Layout [in]bayer类型
return void
*/
//--------------------------------------------------
定义函数
ConvertBayer2Rgb(m_pImageBuffer,m_pRawBuffer,Width,Height,ConvertType,
m_pLutR,m_pLutG,m_pLutB,true,m_Layout);
BYTE m_pLutR[256] ;
BYTE m_pLutG[256] ;
BYTE m_pLutB[256] ;
for(int i=0;i<256;i++)
{
m_pLutR[i] = i;
m_pLutG[i] = i;
m_pLutB[i] = i;
}
请问如何利用该函数分辨出图像某一区域偏于白色还是偏于蓝色,或者如何获得某一点的R值G值B值?m_pLutR,m_pLutG,m_pLutB这三个能转换成RGB数值吗
楼主现在需要做的,是去了解RGB格式图像在内存中是如何存储的,而不是希望有一个函数能帮你做任何事情
*(首指针+行数*每行长度+列数*3+分量号),就这么简单
当中的m_pImageBuffer就是你的RGB数据啊,只不过这个是24位的,你需要隔3个字节取一次数据就是对应的R(或B或G)值。
我也在用大恒的相机,说实话我特别不喜欢这个ConvertBayer2Rgb函数,其实数据我已经取到了,只不过是raw数据,用这个函数只不过是转成RGB模式的。明明我是8位的,非得给我转成24位的,增加了我处理的时间,害的我还要再转成8位的。我要是弄清楚了你那个什么layer数据的格式,我不会用你这个垃圾函数!