本文提供了使用directshow代替opencv的vfw 的源代码,与转化为iplimage格式的算法. 实验中发现opencv的cvCaptureFromCAM 使用的是vfw,采用消息机制,速度较慢,测试发现fps只有 9-12左右,太慢了. 发现经过使用directshow后速度提升到60帧/s. 在open、
变量名 | 类 型 | 静态 | 数组 | 备 注 | Directshow | 整数型 | | | 已打开 | 逻辑型 | | | 图 | 多维矩阵类 | | | 设备数 | 整数型 | | | 设备名 | 文本型 | | | i | 整数型 | | |
Directshow = Directshow创建 ()已打开 = Directshow打开 (Directshow, 0, 真, 640, 480 )图. 初始化 (Directshow获取高 (Directshow ), Directshow获取宽 (Directshow ), #Cv无符号字节型_三通道, ) 设备名 = 取空白文本 (255 )设备数 = Directshow获取设备数 ()视觉_控制台输出 (“发现” + 到文本 (设备数 ) + “个设备...\n\n”, )计次循环首 (设备数, i )Directshow获取设备名称 (i - 1, 设备名, 255 )视觉_控制台输出 (“设备” + 到文本 (i ) + “ ID=” + 到文本 (i - 1 ) + “ 设备名称:” + 设备名 + “\n”, )计次循环尾 ()判断循环首 (已打开 )如果真 (Directshow读 (Directshow, 图. 数据指针 ()) )图. 初始化 (Directshow获取高 (Directshow ), Directshow获取宽 (Directshow ), #Cv无符号字节型_三通道, )到循环尾 () 视觉_翻转 (图, 图, 0 )视觉_显示图像 (“小白鼠”, 图 ) 如果真 (视觉_等待按键 (1 ) > 1 )跳出循环 ()判断循环尾 ()Directshow关闭设备 (Directshow )Directshow释放 (Directshow )返回 (0 )
|