最近发现程序cpu占用率偏高,排查原因,最后确定是图像采集模块导致。我们选用的是嘉恒中自的OK系列图像采集卡,有以下两种采集方式:
1、BOOL WINAPI okCaptureTo (HANDLE hBoard, TARGET target, LONG wParam, LPARAM lParam)
功能: 采集视频输入到指定的目标体。这里的目标体可以是VGA屏(SCREEN)、帧缓存(BUFFER)、帧存体(FRAME)。缺省状态下为不等采集结束立即返回。
参数:
hBoard: 输入卡句柄
target: 要采集到的目标体
wParam: 采集目标体的起始帧序号
lParam: >0表示采集的帧数;
=0表示连续采集,不支持回调函数;
=-1表示循环序列采集方式,支持回调函数
返回值: 如果调用成功,返回该目标支持的最大帧数。如果失败返回0;如果该目标不支持则返回-1。
2、BOOL WINAPI okCaptureSequence (HANDLE hBoard, LONG lStart, LPARAM lNoFrame)
功能: 中断控制的序列采集视频输入到缓存(BUFFER)。不等采集结束立即返回。
参数:
hBoard: 输入卡句柄
lStart: 采集目标体的起始帧序号
lNoFrame: >0表示采集的帧数;
=0表示不采集;
=-1表示循环序列采集方式,支持回调函数
返回值: 如果调用成功,返回该目标支持的最大帧数。如果失败返回0;如果该目标不支持则返回-1。
说明 : okCaptureTo 和okCaptureThread 均采用查询的方式,即查到有一帧图像采集完成便进行处理,支持多目标;okCaptureSequence采用中断方式,即采集卡采集完成一帧图像会通过消息通知进而触发采集处理,只支持采集到缓存,但okCaptureSequence效率更高, 可有效降低cpu使用率。
在我们的平台上(2.60GHz Cpu)测试结果cpu使用率明显得到降低。
okCaptureTo 采集方式:
okCaptureSequence采集方式:
本文详细分析了在2.60GHz CPU平台上,通过选用嘉恒中自的OK系列图像采集卡,并采用okCaptureSequence采集方式,有效降低了程序的CPU占用率。比较了okCaptureTo和okCaptureSequence两种采集方式的性能,最终实现了优化图像采集过程,提升系统效率的目标。

被折叠的 条评论
为什么被折叠?



