大恒视频采集流程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用OpenCV进行大恒CG400CG410视频采集卡的视频读取
(2013-04-27 16:12:02)
转载▼
分类:opencv
标签:
杂谈
最近用到红外摄像头,要用到视频采集卡,采用的是大恒CG410的板子,CG410是CG400的升级版,虽然驱动不一样,SDK和适用环境是一样的。这是使用的是win7 32位系统。大恒的SDK的事例都是都是MFC的代码,奈何我需要的是在控制台下进行摄像头的读取,并转换到OpenCV可以识别的图像数据格式IplImage或者Mat结构,这个使用的是前者。下面是解决方法:
在项目的库中包含
CGVideo.lib
CGVidEx.lib
头文件记得加入windows.h,因为要使用到windows句柄
代码如下:
1:#include"opencv2/core/core.hpp"
2:#include"opencv2/highgui/highgui.hpp"
3:#include"opencv2/imgproc/imgproc.hpp"
4:#include"opencv2/video/video.hpp"
5:#include
6:#include
7:
8:#include"CGVideo.h"
9:#include"CGDef.h"
10:#include"CGVidEx.h"
11:
12:using namespace std;
13:using namespace cv;
14:
15:int main()
16: {
17://初始化所有成员变量,同时打开图像卡 */
18: CGSTATUS status = CG_OK;
19: HCG hcg = NULL;
20:
21://打开图像卡 1,返回状态值
22: status = BeginCGCard(1, &hcg);
23:
24://检验函数执行状态,如果失败,则返回错误状态消息框*/
25: CG_VERIFY(status);
26:
27://初始化图像卡硬件状态,用户也可以在其他位置初始化图像卡,
28://但应保证图像卡已经打开,建议用户在应用程序初始化时,同时初始化图像卡硬件。
29:// 设置视频制式(PAL / NTSC),由当前视频源制式决定
30: CGSetVideoStandard(hcg, PAL);
31:
32:// 扫描模式,包括 FRAME、FIELD
33: CGSetScanMode(hcg, FRAME);
34:
35://晶振,包括CRY_OSC_35M、CRY_OSC_28M
36://对于DH-CG300图像卡,一般为CRY_OSC_35M,
37://对于DH-QP300图像卡,一般为CRY_OSC_28M,
38://其他类型图像卡没有此硬件设置,但可以调用此接口,并返回CG_NOT_SUPPORT_INTERFACE信息
39:
40: CGSelectCryOSC(hcg, CRY_OSC_35M);
41:
42://视频格式,即采集图像数据描述方式,包括YUV422、RGB888、RGB565、RGB555、RGB8888、ALL8BIT、LIMITED8BIT,
43://在采集图像到屏幕时,需要保证视频格式和当前系统屏幕位深度一致,而采集到内存没有此限制。
44: CGSetVideoFormat(hcg, RGB888);
45:
46:
47://视频源路VIDEO_SOURCE包括视频类型和序号,
48://各种图像卡支持的视频源路不尽相同,请参看相应硬件说明
49: VIDEO_SOURCE source;
50: source.type = COMPOSITE_VIDEO; //视频类型为复合视频
51: source.nIndex = 0; //序号为0
52: CGSetVideoSource(hcg, source);
53:
54://视频输入窗口,即视频输入范围,输入窗口取值范围:
55://对于视频制式为PAL制,水平方向为0-768,垂直方向为0-576
56://对于视频制式为NTSC制,水平方向为0-768,垂直方向为0-576
57://视频窗口左上角X坐标和窗口宽度应为4的倍数,左上角Y坐标和窗口高度应为2的倍数
58: CGSetInputWindow(hcg, 0, 0, 768, 576); //视频输入窗口取最大
59:
60:
61://视频输出窗口,即视频输出范围,输出窗口取值范围必须在输入窗口范围以内,
62://视频窗口左上角X坐标和窗口宽度应为4的倍数,左上角Y坐标和窗口高度应为2的倍数
63://在采集到屏幕时,输出窗口的起始位置为图像屏幕输出位置的屏幕坐标,
64://在采集到内存时,输出窗口的起始位置设置为(0, 0)即可。
65:
66: CGSetOutputWindow(hcg, 0, 0, 768, 576);
67:
68://初始化BITMAPINFO 结构指针
69: BITMAPINFO *pBmpInfo = NULL;