金牌会员
- 积分
- 1001
- 威望
- 402
- 贡献
- 435
- 兑换币
- 0
- 注册时间
- 2010-1-11
- 在线时间
- 82 小时
|
本帖最后由 96107015 于 2010-3-12 10:24 编辑
用VC6.0的话,不太好做。如果是VC2005的话,有个CImage类,很好用。
例如:
你从下位机上发过来一个二维数组 img[128[[176]假设你采集到的像素是128*176的
下面就是对这个二维数组的处理了
1,建立一个MFC的对话框应用程序(为方便叙述,假设工程名字为img),在资源视图中删除对话框上的控件。
2,在stdafx.h文件的最后加上#include<atlimage.h>
3,转到类视图,在类CimgDlg中添加变量 CImage img和 img[128][176] (这个变量中储存你上位机接受到的图像数据,这里假设你的图像是256阶灰度数据,即你的摄像头是灰度的,值从0~255,0是黑色 255是白色)
4,在类CimgDlg中添加消息响应函数OnTimer(UINT_PTR nIDEvent)
5,在CfcarDlg::OnInitDialog()函数中添加初始化代码
img.Create(176,128,8);
img.SetColorTable(0,256,colortab);
SetTimer(1,40,NULL);
6,在OnTimer(UINT_PTR nIDEvent)函数中加入如下代码
BYTE *buf;
for(int y=0;y<img.GetHeight();y++)
{
buf=(BYTE*)img.GetPixelAddress(0,y);
for(int x=0;x<img.GetWidth();x++)
{
buf[x]=img[y][x];
}
}
CDC*pDC=this->GetDC();
img.BitBlt(*pDC,0,0);
ReleaseDC(pDC);
7,编译运行就可以了
补充:怎样把数据传到上位机,我现在也不知道,希望能帮到你!! |
|