CB_Device SDK 示例代码
基于真实接口的最小可用示例:枚举→打开→设置参数→回调采集→保存 BMP。
以下示例使用头文件中的真实接口名(CB_Device 支持回调,以下用回调方式采集)。
示例一:回调方式采集并在回调中保存 BMP
#include "CB_DeviceApi.h"
#include <cstdio>
// 采集回调:每帧就绪时由 SDK 调用
void __stdcall OnGrab(int32_t iDevIndex, CB_TFrameData* ptFrameData, void* pContext)
{
CB_TFrameData* f = ptFrameData;
printf("frame %llu: %ux%u format=%u\n",
(unsigned long long)f->tChunkData.iFrameId,
f->tImageInfo.iWidth, f->tImageInfo.iHeight,
f->tImageInfo.ePixelFormat);
// 保存为 BMP(需自行填充 CB_TSaveImage)
CB_TSaveImage save{};
save.pImageBuf = f->pBuffer;
save.tImageInfo = f->tImageInfo;
save.eImageFileFormat = CB_ImageFileFormat_Bmp;
save.pFilePathName = "frame.bmp";
CB_SaveImage(&save);
// 处理完必须释放帧内存
CB_FreeGrabFrameBuffer(iDevIndex, f);
}
int main()
{
if (CB_Initial() != CB_E_SUCCESS) return -1;
int32_t nDev = 0;
CB_EnumerateDevices(&nDev, nullptr);
if (nDev == 0) { CB_Uninitial(); return -1; }
CB_OpenDevice(0);
CB_SetGrabCallback(0, OnGrab, nullptr);
CB_StartGrabbing(0);
printf("grabbing, press Enter to stop...\n");
getchar();
CB_StopGrabbing(0);
CB_CloseDevice(0);
CB_Uninitial();
return 0;
}
示例二:通过参数树设置曝光时间(GenICam 风格)
// 假设设备暴露名为 "ExposureTime" 的浮点参数(具体名称以相机 XML 为准)
float fExp = 0;
if (CB_GetFloatParam(0, "ExposureTime", &fExp) == CB_E_SUCCESS) {
printf("current exposure: %f\n", fExp);
}
CB_SetFloatParam(0, "ExposureTime", 1000.0f); // 单位由 CB_Unit_e 决定
参数名(如
ExposureTime、Gain、TriggerMode等)与可选值请参考对应机型的 GenICam XML 或厂商文档;
调用前可用CB_GetParamNameByIndex枚举、用CB_GetParamInfoByName确认类型与权限。
这份文档对您有帮助吗?
发现错误、表述不清或缺少内容?请告诉我们,我们会尽快补充。
您可以通过以下方式反馈: 发送邮件至 service@catchbest.com