Labwindows/CVI下调用openCV实现多摄像头切换
来源:互联网 发布:第一人称冒险游戏java 编辑:程序博客网 时间:2024/05/21 10:26
基本要求为使用Labwindows设计一个摄像头监控程序,要求如下:
1、包含文件菜单,并有快捷图标。摄像头图片信息预览。
2、当有多个摄像头时候能设别多设备,界面上能选择与某个设备连接。
3、全尺寸读取图片信息,并且能按照设定的分辨率截取图片信息。
4、按键能进行截图操作,截图后保存出来,同时把图片加载至dll文件中。
5、额外编写 一个dll文件,该文件在按键截图时候,能加载所截取的图片并且给出一个处理后的简易图片(黑白处理等)。
6、显示处理后的图片。
7、在没有硬件接入的时候,能给出提示。
方案一:采用VFW技术,调用API接口函数capCreateCaptureWindowA 函数即可创建视频窗口,然后通过Windows标准的SendMessage函数发出控制指令,常用指令如下:
#define WM_CAP_START WM_USER//开始
SendMessage((HWND)cam_handle, WM_CAP_SET_PREVIEWRATE, 66, 0);
SendMessage((HWND)cam_handle, WM_CAP_SET_OVERLAY, 1, 0);
SendMessage((HWND)cam_handle, WM_CAP_SET_PREVIEW, 1, 0);
即可成功打开摄像头。通过SendMessage((HWND)cam_handle, WM_CAP_DLG_VIDEOSOURCE, 0, 0);指令即可弹出驱动定制的对话框选择视频来源,即在多摄像头之间切换。但是此方案仅能弹出对话框让用户自行选择,不能程序控制切换,而且有诸多BUG和兼容性问题存在。
方案二:使用openCV计算机视觉库。
OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
本次我们仅需调用其中的摄像头控制部分,仅需其中的CVCAM100.dll即可。而CVCAM部分在高版本的openCV中被替换为了DirectShow方案实现,高版本中被集成到其他库里面去了。所以我选择下载openCV1.0版本,将其中的CVCAM部分移植出来。安装好openCV1.0后在其bin目录下将所有dll文件均复制到Windows\system32目录下,然后otherlib中找到cvcam相关的.h和.lib文件复制到工程目录下。打开工程将cvcam.h、cvcam.lib、cvcam100.dll导入,在主程序中包含cvcam.h文件即可。下面为测试程序部分代码:
ncams = cvcamGetCamerasCount();
HWND MyWin;
//选择摄像头
cvcamSetProperty(0, CVCAM_PROP_ENABLE, CVCAMTRUE);
//camera
cvcamSetProperty(0, CVCAM_PROP_RENDER, CVCAMTRUE);
MyWin = (HWND)PANEL_CANVAS;
cvcamSetProperty(1, CVCAM_PROP_WINDOW, &cam_handle);
//设置回调函数
cvcamSetProperty(0, CVCAM_PROP_CALLBACK, callback);
cvcamInit();
cvcamStart();
//程序开始工作
cvWaitKey(0);
cvcamStop();
cvcamExit();
- Labwindows/CVI下调用openCV实现多摄像头切换
- LabWindows/CVI 调用dll的方法
- NI LabWindows CVI 中调用 DLL 的几种方法
- NI LabWindows CVI 中调用 DLL 的几种方法
- Labwindows/CVI程序调用C#生成的Dll文件
- labwindows/CVI excel报表
- LabWindows/CVI 下载
- LabWindows/CVI线程操作
- Labwindows CVI 2013 一
- LabWindows/CVI对话框
- 基于LabWindows/CVI的光谱分析系统的设计与实现
- LabWindows/CVI之无驱摄像头使用--实例:远程监控(TCP)
- LabWindows/CVI入门之第一章:LabWindows/CVI开发环境
- LabWindows/CVI基础教程-By.Lyfing
- 在LabWindows/CVI环境下写的队列,欢迎大家来找茬
- OpenCV编程->Windows7下调用iPhnoe摄像头
- LabWindows™/CVI中的多线程技术【转】
- 初步了解了一下LabWindows CVI 9.0
- toad导出表的数据
- 陈老师的多校联合2010811c题||09年武汉站||hdu3232
- JMM介绍
- Runtime类
- [LeetCode]Longest Substring Without Repeating Characters
- Labwindows/CVI下调用openCV实现多摄像头切换
- 母函数之Big Event in HDU hdoj 1171
- bnu36905 Nested Segments 离散化+线段树
- Android开发周围wifi热点和属性的获取
- 一些有用的数论知识。(莫比乌斯反演)
- 陈老师的多校联合2009年武汉站D题 ||hdu 3033
- POJ 1113 Wall 二维凸包
- hdu 2092 求整数解是否存在
- HDOJ题目2120 Ice_cream's world I(并查集)