新建一个对话框支持相机操作
1.新建mfc应用程序Dialog类配置引用头文件
然后点击菜单中的project->properties弹出Property page窗口。选择Configuration Properties->C/C++->General在Additional Include Directories中填写GalaxyIncludes.h所在目录路径地址(依用户安装目录为准),
即 ../../inc;%(AdditionalIncludeDirectories)
配置lib文件
选择Configuration Properties->Linker->General在Additional Library Directories中填写GxIAPICPP.lib所在目录路径地址(依用户安装目录为准),即 ../../lib/x64;%(AdditionalLibraryDirectories)
然后选择Configuration Properties->Linker->Input在Additional Dependencies中填写
GxIAPI.lib;DxImageProc.lib;%(AdditionalDependencies)
/* GxIAPI.lib是相机的初始化库文件,通过GxIAPI.h调用 ,DxImageProc.lib猜测是图像处理库文件,通过DxImageProc.h调用 (资料少得可怜人hehehehe) */
2.修改代码初步支持初始化设备
移植过程步骤略微繁琐,我会把最后的工程文件打包上传,在这里仅仅记录重要函数的修改
2.1.在Dlg.h中添加一些宏(用时再添加):
#define GX_VERIFY(emStatus) \
if (emStatus != GX_STATUS_SUCCESS)\
{\
ShowErrorString(emStatus); \
return ;\
}
#define VERIFY_STATUS_RET(emStatus) \
if (emStatus != GX_STATUS_SUCCESS) \
{\
return emStatus;\
}\
更详细介绍参见相机的技术文档《C++软件开发说明书》
..................................................更新于2018.4.3.....................................................
2.2cameraDla类中添加相机初始化和设置参数2.3添加打开设备按钮 在点击处理函数下移植代码
// TODO: 在此添加控件通知处理程序代码
GX_STATUS emStatus = GX_STATUS_SUCCESS;
uint32_t nDevNum = 0;
GX_OPEN_PARAM stOpenParam;
/* typedef struct GX_OPEN_PARAM
{
char *pszContent; ///< 输入参数内容,不允许为空字符串
GX_OPEN_MODE_CMD openMode; ///< 打开方式
GX_ACCESS_MODE_CMD accessMode; ///< 访问模式
}GX_OPEN_PARAM;
*/
// 初始化打开设备用参数,默认打开序号为1的设备
stOpenParam.accessMode = GX_ACCESS_EXCLUSIVE;
stOpenParam.openMode = GX_OPEN_INDEX;
stOpenParam.pszContent = "1";
// 枚举设备
emStatus = GXUpdateDeviceList(&nDevNum, 1000);
GX_VERIFY(emStatus);
// 判断当前连接设备个数if (nDevNum <= 0)
{
MessageBox("未发现设备!");
return;
}
// 如果设备已经打开则关闭,保证相机在初始化出错情况能再次打开
if (m_hDevice != NULL)
{
emStatus = GXCloseDevice(m_hDevice);
GX_VERIFY(emStatus);
m_hDevice = NULL;
}
// 打开设备
emStatus = GXOpenDevice(&stOpenParam, &m_hDevice);
GX_VERIFY(emStatus);
m_bDevOpened = TRUE;
// 设置相机的默认参数:采集模式:连续采集,数据格式:8-bit
emStatus = InitDevice();
GX_VERIFY(emStatus);
// 获取设备的宽、高等属性信息
emStatus = GetDeviceParam();
GX_VERIFY(emStatus);
// 获取相机参数,初始化界面控件
InitUI();
// 更新界面控件
UpDateUI();
2.4添加
InitUI();
UpDateUI();
GetDeviceParam
InitDevice(void);
ShowErrorString
SetPixelFormat8bit
在opendev消息函数中有
emStatus = GXUpdateDeviceList(&nDevNum, 1000);
nDevNum是相机设备个数 一般为1或者2
emStatus 为0说明成功
必须要加的几条语句:
CGxSingleCamMonoDlg::CGxSingleCamMonoDlg(CWnd* pParent /*=NULL*/)
: CDialog(CGxSingleCamMonoDlg::IDD, pParent)
, m_bIsSaveImg(FALSE)
, m_bDevOpened(FALSE)
, m_bIsSnap(FALSE)
, m_bTriggerMode(false)
, m_bTriggerActive(false)
, m_bTriggerSource(false)
, m_nImageHeight(0)
, m_nImageWidth(0)
, m_nPayLoadSize(0)
, m_nTriggerMode(0)
, m_hDevice(NULL)
, m_pBmpInfo(NULL)
, m_pBufferRaw(NULL)
, m_pImageBuffer(NULL)
, m_strFilePath("")
, m_pWnd(NULL)
, m_hDC(NULL)
/* 初始化参数不然报错 */
void CcameraDlg::UpDateUI()中
GetDlgItem(ID_OPEN_DEV)->EnableWindow(!m_bDevOpened); /* 打开设备 要添加*/
2.5 添加采集图像对话题 添加text control
添加消息处理函数: void CcameraDlg::OnBnClickedShowVideo()
编译出错:添加函数
添加 : UnPrepareForShowImg
OnFrameCallbackFun
PrepareForShowImg
SaveImage
DrawImg
效果图:![](https://i-blog.csdnimg.cn/blog_migrate/e837018630e22a40e4ae7e8543deab88.png)
完结
资源页:
https://download.csdn.net/download/zxpcus/10325425