图像数据储存问题

njit_77 2014-11-13 10:45:59
void TForm1::camGetPlay()
{
BYTE* camdata = NULL;
int CamWidth, CamHeight, PixFormat;
int i1 = 0;
getCamData(&camdata,&CamWidth,&CamHeight,&PixFormat); //读取相机的数据 camdata是dll里面函数取得的RGB数据
m_bmp->PixelFormat = pf24bit;
if(PixFormat ==1) //相机是黑白相机
{
for(int j = 0; j <m_bmp->Height;j++)
{
BYTE *ptr = (BYTE *)m_bmp->ScanLine[j];
i1 = 0;
for(int i = 0; i<m_bmp->Width*3; i+=3)
{
ptr[i+2] = camdata[CamWidth*j+i1];
ptr[i+1] = camdata[CamWidth*j+i1];
ptr[i] = camdata[CamWidth*j+i1];
i1++;
}
}
}
else //相机是彩色相机
{
for(int j = 0; j <m_bmp->Height;j++)
{
BYTE *ptr = (BYTE *)m_bmp->ScanLine[j];
i1=0;
for(int i = 0; i<m_bmp->Width*3; i+=3)
{
ptr[i] = camdata[CamWidth*j+i1];
ptr[i+1] = camdata[CamWidth*j+i1+1];
ptr[i+2] = camdata[CamWidth*j+i1+2];
i1++;
}
}
}
}

我想实现的功能时,不能的相机可以显示出黑白或者彩色的图片。
1、请大神帮忙看下,上面的代码对不对啊?可以详细解释下代码更好
2、用BCB怎么把转换好的图片显示出来?

...全文
160 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
njit_77 2014-11-26
  • 打赏
  • 举报
回复
void TForm1::camGetPlay() { BYTE* camdata = NULL; int CamWidth, CamHeight, PixFormat; int i1 = 0; getCamData(&camdata,&CamWidth,&CamHeight,&PixFormat); //读取相机的数据 camdata是dll里面函数取得的RGB数据 m_bmp->PixelFormat = pf24bit; if(PixFormat ==1) //相机是黑白相机 { for(int j = 0; j <m_bmp->Height;j++) { BYTE *ptr = (BYTE *)m_bmp->ScanLine[j]; i1 = 0; for(int i = 0; i<m_bmp->Width*3; i+=3) { ptr[i+2] = camdata[CamWidth*j+i1]; ptr[i+1] = camdata[CamWidth*j+i1]; ptr[i] = camdata[CamWidth*j+i1]; i1++; } } } else //相机是彩色相机 { for(int j = 0; j <m_bmp->Height;j++) { BYTE *ptr = (BYTE *)m_bmp->ScanLine[j]; i1=0; for(int i = 0; i<m_bmp->Width*3; i+=3) { ptr[i] = camdata[CamWidth*j+i1]; ptr[i+1] = camdata[CamWidth*j+i1+1]; ptr[i+2] = camdata[CamWidth*j+i1+2]; i1++; } } } } 没有好的答案吗?
xjq2003 2014-11-13
  • 打赏
  • 举报
回复
引用 楼主 njit_77 的回复:
void TForm1::camGetPlay() { BYTE* camdata = NULL; int CamWidth, CamHeight, PixFormat; int i1 = 0; getCamData(&camdata,&CamWidth,&CamHeight,&PixFormat); //读取相机的数据 camdata是dll里面函数取得的RGB数据 m_bmp->PixelFormat = pf24bit; if(PixFormat ==1) //相机是黑白相机 { for(int j = 0; j <m_bmp->Height;j++) { BYTE *ptr = (BYTE *)m_bmp->ScanLine[j]; i1 = 0; for(int i = 0; i<m_bmp->Width*3; i+=3) { ptr[i+2] = camdata[CamWidth*j+i1]; ptr[i+1] = camdata[CamWidth*j+i1]; ptr[i] = camdata[CamWidth*j+i1]; i1++; } } } else //相机是彩色相机 { for(int j = 0; j <m_bmp->Height;j++) { BYTE *ptr = (BYTE *)m_bmp->ScanLine[j]; i1=0; for(int i = 0; i<m_bmp->Width*3; i+=3) { ptr[i] = camdata[CamWidth*j+i1]; ptr[i+1] = camdata[CamWidth*j+i1+1]; ptr[i+2] = camdata[CamWidth*j+i1+2]; i1++; } } } } 我想实现的功能时,不能的相机可以显示出黑白或者彩色的图片。 1、请大神帮忙看下,上面的代码对不对啊?可以详细解释下代码更好 2、用BCB怎么把转换好的图片显示出来?
关注

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧