首页 > 其他 > 详细

摄像头拍照

时间:2014-04-04 17:23:39      阅读:407      评论:0      收藏:0      [点我收藏+]

本程序下载地址:

  在Windows下进行摄像头拍照功能开发,可以借助开源的摄像头项目或者一系列的demo。

  本程序实现一个简单的拍照功能, 需要使用Cximage库, CCameraAPI库,这些都是开源的,我们可以直接使用它提供出来的接口就可以了。

一、初始化摄像头过程

  bubuko.com,布布扣

  之前得再CTakephotoDlg类中创建一个私有的CCameraAPI 指针,并在CTakephotoDlg构造函数中置为空。

bubuko.com,布布扣
class CTakephotoDlg : public CDialog
{
// Construction
public:
    CTakephotoDlg(CWnd* pParent = NULL);    // standard constructor
    ~CTakephotoDlg();    // standard constructor

// Dialog Data
    //{{AFX_DATA(CTakephotoDlg)
    enum { IDD = IDD_TAKEPHOTO_DIALOG };
        // NOTE: the ClassWizard will add data members here
    //}}AFX_DATA

    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CTakephotoDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    //}}AFX_VIRTUAL

// Implementation
private:
    CCameraAPI * m_pCamera;    //创建一个CCameraAPI指针
public:
    void InitCamera();
protected:
    HICON m_hIcon;

    // Generated message map functions
    //{{AFX_MSG(CTakephotoDlg)
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    afx_msg void OnBtnPhoto();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};
bubuko.com,布布扣

  在构造函数中将该指针置为NULL;

//初始化时清空
m_pCamera = NULL;
bubuko.com,布布扣
 1 //初始化摄像头设备
 2 void CTakephotoDlg::InitCamera()
 3 {
 4     if(NULL == m_pCamera)
 5     {
 6         //创建一个摄像头api对象,之后通过调用这个对象提供的方法来拍照
 7         m_pCamera = new CCameraAPI();
 8         
 9         if(NULL == m_pCamera)
10         {
11             return ;
12         }
13         
14         //获取窗口句柄
15         CWnd* pCwnd = this->GetDlgItem(IDC_EDIT_VIDEO);
16 
17         if(NULL == pCwnd)
18         {
19             return;
20         }
21         
22         //摄像头ID,可以任意填写
23         CString strPid ="0";  
24         
25         //摄像头和某个窗口相关联,即预览显示的窗口
26         m_pCamera->Init(pCwnd->m_hWnd, strPid);
27     }
28 }
bubuko.com,布布扣

二、拍照过程

bubuko.com,布布扣

bubuko.com,布布扣
 1 //拍照响应函数
 2 void CTakephotoDlg::OnBtnPhoto() 
 3 {
 4     // TODO: Add your control notification handler code here
 5     
 6     //每次点击拍照按钮,拍照保存的图片为次数索引值
 7     static int nImageIndex = 0;
 8 
 9     CString strImageIndex = "";
10 
11     strImageIndex.Format("%d",nImageIndex);
12 
13     //图像保存的位置
14     CString strSaveDir = "D:\\" + strImageIndex + ".jpg";
15     
16     //获取视频预览当前中的一张图像帧
17     CxImage* pCximage = m_pCamera->GetImage();
18 
19     //保存该图像帧
20     pCximage->Save(strSaveDir, 3);    
21 
22     //下次拍照保存后的图片名
23     nImageIndex++;
24 }
bubuko.com,布布扣

 三、程序运行结果

  bubuko.com,布布扣

摄像头拍照,布布扣,bubuko.com

摄像头拍照

原文:http://www.cnblogs.com/xydblog/p/3644571.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!