摄像头保存位图

目的:保存一张或N张摄像头拍摄的景色至位图


使用的是vfw


下面是具体步骤:


1   :打开VC6.0 ,新建一个基于对话框的MFC程序,命名为Camera01。

2   :在左侧的工作区中选择ResourceView选项卡,展开Dialog,双击 IDD_CAMERA01_DIALOG选项。

3   :找到控件栏中的静态文本框控件,添加至对话框。

4   :在该静态文本框控件上右键,选择最后一个选项Properties,修改其ID为IDC_STATIC_CAMERA。

5   :在该静态文本框控件上右键,选择classwizard,选择Member Variables选项卡,选中 IDC_STATIC_CAMERA,然后点击ADD Variable关联变量CStatic m_stcCamera,下面两项应为Control ,CStatic,点击OK ,OK。

6   :在FileView中 ,Header Files  StdAfx.h中添加以下代码:

#include <vfw.h>
#pragma comment(lib, "vfw32")

7   :在Camera01Dlg.cpp中的BOOL CCamera01Dlg::OnInitDialog()函数中添加以下代码:

// TODO: Add extra initialization here
		CWnd *pCarryWnd = this->GetDlgItem(IDC_STATIC_CAMERA);//得到预示窗口指针
	CRect rect;
	pCarryWnd->GetClientRect(&rect);
	m_hCameraWnd = capCreateCaptureWindow("MY PC CAMERA", WS_CHILD|WS_VISIBLE,
		                    0, 0, rect.Width(), rect.Width(),
		                    pCarryWnd->GetSafeHwnd(), 0);
	if(m_hCameraWnd == NULL)
	{
		AfxMessageBox("创建视频窗口失败!");
		return TRUE;
	}

	if(!capDriverConnect(m_hCameraWnd, 0)) return TRUE;
	CAPDRIVERCAPS cpas;
	capDriverGetCaps(m_hCameraWnd,sizeof(CAPDRIVERCAPS), &cpas);
	if(cpas.fCaptureInitialized)
	{
		CAPSTATUS status;
		capGetStatus(m_hCameraWnd, &status, sizeof(CAPSTATUS)); 
		capPreviewRate(m_hCameraWnd, 25);
		capPreview(m_hCameraWnd, TRUE);
		
	}

8:   :在Camera01Dlg.h中的
protected:
    HICON m_hIcon;


下面添加:

HWND m_hCameraWnd;

以上的步骤编译完成的是摄像头预览的程序,是《Visual C++  范例开发大全》中的248页实例159 。


下面我们开始截图的程序:


1   :在对话框上添加一个按钮控件。

2   :在按钮控件上右键,点击classwizard,选择IDC BUTTON1  再选择Messages中的BN_CLICKED,然后点击Add Function,点击OK,OK。

3   :双击新添加的按钮,为按钮响应函数添加以下代码:

char s[20];
for(int i=0;i<50;i++)
{
if(capGrabFrame(m_hCameraWnd))
{sprintf(s,"0%d.bmp",i);
capFileSaveDIB(m_hCameraWnd,s);
}
}

其中的50是你想要的多少张图片的个数。





评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值