青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

CCD camera類設計及簡易實現

上一篇文章中介紹了關于CCD camera實現的一般流程CCD camera的一般控制流程及些許困惑,現在想用類來實現這個過程。該類設計以及實現的目的是用于相機拍照,成像,存儲。目前僅考慮拍照與實時成像兩個過程。由于從簡單上進行設計,實現的一般流程中的一些步驟能夠省略。具體代碼如下:

   1: // ccd_class.h
   2: class CCDClass
   3: {
   4: private:
   5:     HANDLE      m_hCam;               // handle of camera
   6:     SHORT       m_sBufNr;
   7:     WORD       *m_imgBuf;             // store img from camera
   8:     WORD        m_wXResAct;           // x resolution of img
   9:     WORD        m_wYResAct;           // y resolution of img
  10:     DWORD       m_imgSize;            // x resolution * y resolution
  11:     HANDLE      m_hEvent;             // will be used in WaitForSingleObjects()
  12:     unsigned char *m_imgRGB;          // convert data in imgBuf to RGB
  13:     
  14: public:
  15:     CCDClass();
  16:     ~CCDClass();
  17:  
  18:     HANDLE GethEvent();
  19:     unsigned char* GetImgRGB();
  20:  
  21:     void Conv16to24();
  22:  
  23:     int OpenCamera();             // just open camera
  24:     int InitialCamera();          // allocate buffer and set recording on
  25:     int RunCamera();              // record img to allocated buffer
  26:     int StopCamera();             // set recording off
  27:     int CloseCamera();            // close camera and free pic buffer
  28: };

 

   1: // ccd_class.cpp
   2: #include "ccd_class.h"
   3:  
   4: CCDClass::CCDClass()
   5: {
   6:     // initial variables
   7:     m_hCam = NULL;
   8:     m_hEvent = NULL;
   9:     m_sBufNr = -1;
  10:     m_imgBuf = 0;
  11:     m_wXResAct = 1392;            // the default x resolution is 1392
  12:     m_wYResAct = 1040;            // the default y resolution is 1040
  13:     m_imgRGB = new unsigned char[1392*1040*3];
  14: }
  15:  
  16: CCDClass::~CCDClass()
  17: {
  18:     delete [] m_imgRGB;
  19:     imgRGB = 0;
  20: }
  21:  
  22: // Open camera
  23: int CCDClass::OpenCamera()
  24: {
  25:     PCO_OpenCamera(&m_hCam, 0);          // default open successfully
  26:     return 0;
  27: }
  28:  
  29: // allocate buffer and set recording on
  30: int CCDClass::InitialCamera()
  31: {
  32:     m_sBufNr = -1;            // mean the buffer will be a new buffer
  33:     PCO_ArmCamera(m_hCam);
  34:  
  35:     DWORD bufSize;            // size of buffer in byte
  36:     int errCode;
  37:  
  38:     m_imgSize = m_wXResAct * m_wYResAct;
  39:     bufSize = 2*m_imgSize;
  40:     m_imgBuf = new WORD[m_imgSize];
  41:  
  42:     if (PCO_AllocateBuffer(m_hCam, &m_sBufNr, m_bufSize, &m_imgBuf, &m_hEvent) != 0) {
  43:         errCode = CloseCamera();
  44:         return errCode;
  45:     }
  46:  
  47:     if (PCO_SetRecordingState(m_hCam, 0x0001) != 0) {
  48:         errCode = CloseCamera();
  49:         return errCode;
  50:     }
  51:     
  52:     return 0;
  53: }
  54:  
  55: // record img in allocated buffer
  56: int CCDClass::RunCamera()
  57: {
  58:     if (PCO_AddBufferEx(m_hCam, 0, 0, m_sBufNr, m_wXResAct,
  59:                         m_wYResAct, 14) != 0) {    // 14 is bytes in one pixel
  60:         wxMessageBox(wxT("PCO_AddBufferEx"));
  61:         errCode = CloseCamera();
  62:         return errCode;
  63:     }
  64:     
  65:     return 0;
  66: }
  67:  
  68: // set recording off
  69: int CCDClass::StopCamera()
  70: {
  71:     if (PCO_SetRecordingState(m_hCam, 0x0000) != 0) {
  72:         errCode = CloseCamera();
  73:         return errCode;
  74:     }
  75:     
  76:     return 0;
  77: }
  78:  
  79: // close camera and free img buffer
  80: int CCDClass::CloseCamera()
  81: {
  82:     if (m_sBufNr >= 0) {
  83:         PCO_FreeBuffer(m_hCam, m_sBufNr);
  84:     }
  85:  
  86:     if (m_hCam != NULL) {
  87:         PCO_CloseCamera(m_hCam);
  88:     }
  89:     delete [] m_imgBuf;
  90:     m_imgBuf = 0;
  91:     return 999;
  92: }
  93:  
  94: // convert 16bit to 24bit rgb img
  95: void CCDClass::Conv16to24()
  96: {
  97:     unsigned char *m_cData = new unsigned char[m_imgSize];
  98:     
  99:     // convert 16bit img to 8bit
 100:     for (size_t i = 0; i < m_imgSize; ++i) {
 101:         m_cData[i] = (unsigned char)(m_imgBuf[i] >> 6);
 102:     }
 103:     
 104:     unsigned char *ptr1 = m_cData;
 105:     unsigned char *ptr2 = m_imgRBG;
 106:     for (size_t i = 0; i < m_imgSize; ++i) {
 107:         *ptr2++ = *ptr1;
 108:         *ptr2++ = *ptr1;
 109:         *ptr2++ = *ptr1++;
 110:     }
 111:     
 112:     delete [] m_cData;
 113:     m_cData = 0;
 114: }
 115:  
 116: HANDLE CCDClass::GethEvent()
 117: {
 118:     return m_hEvent;
 119: }
 120:  
 121:  
 122: unsigned char* CCDClass::GetImgRGB()
 123: {
 124:     return m_imgRGB;
 125: }

將函數RunCamera單獨起來主要是為了實現實時成像。

不過還不清楚如何進行實時成像,采用onTimer嗎?

posted on 2012-07-04 11:16 鐘謝偉 閱讀(1042) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2012年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

導航

統計

常用鏈接

留言簿(1)

隨筆檔案

IT網站

My Friends

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久久婷| 亚洲欧美制服中文字幕| 国产伦精品一区二区三区高清 | 伊人成人在线视频| 99综合电影在线视频| 在线精品视频一区二区| 亚洲在线观看免费| 亚洲一二三区精品| 欧美黄色免费网站| 欧美高清hd18日本| 国产综合色一区二区三区| 亚洲在线视频| 亚洲一区二区三区午夜| 欧美精品一级| 亚洲欧洲在线一区| 在线看不卡av| 久久久综合网站| 免播放器亚洲一区| 在线精品高清中文字幕| 久久人人爽国产| 久久嫩草精品久久久久| 韩国女主播一区二区三区| 午夜日韩视频| 久久久噜噜噜久久人人看| 国产午夜精品美女视频明星a级| 一区二区三区日韩在线观看| 亚洲午夜在线观看视频在线| 国产精品国产三级欧美二区| 99热免费精品| 亚洲你懂的在线视频| 国产精品久久久久久久久免费| 一区二区日韩精品| 亚洲欧美日韩国产中文在线| 国产欧美日本| 久久久久久久久久久久久女国产乱| 欧美主播一区二区三区| 国产欧美日韩综合精品二区| 久久精品成人一区二区三区| 欧美mv日韩mv国产网站app| 亚洲激情影视| 欧美日韩亚洲一区二区| 亚洲先锋成人| 久久国产视频网站| 在线精品福利| 欧美日韩视频第一区| 亚洲一区二区三区四区中文| 久久成人18免费观看| 亚洲第一精品影视| 欧美日韩国产高清| 亚洲伊人观看| 欧美成人高清| 亚洲男人的天堂在线观看| 国产亚洲成精品久久| 麻豆精品在线观看| 亚洲精品日韩激情在线电影| 香港久久久电影| 激情综合在线| 欧美日韩一区三区四区| 午夜精品久久| 亚洲人成欧美中文字幕| 欧美一级在线视频| 亚洲国产一区二区三区青草影视| 欧美日韩一区综合| 欧美综合国产| 一区二区日韩免费看| 免费日韩av片| 性欧美大战久久久久久久久| 亚洲第一精品夜夜躁人人躁| 国产精品久久亚洲7777| 老司机亚洲精品| 亚洲视频你懂的| 欧美成人精品三级在线观看| 午夜在线精品| 日韩视频不卡| 亚洲国产成人av在线| 国产精品色婷婷| 欧美精品v国产精品v日韩精品| 欧美在线短视频| 亚洲一区二区三区高清 | 亚洲电影免费观看高清完整版在线观看| 欧美高清在线一区| 久久9热精品视频| 亚洲午夜电影网| 亚洲欧洲一区二区三区久久| 久久久久久亚洲精品杨幂换脸| 亚洲一区二区成人在线观看| 亚洲韩国日本中文字幕| 激情成人综合| 国产午夜精品麻豆| 国产精品久久久久久福利一牛影视 | 亚洲激情在线激情| 国产视频在线观看一区二区| 欧美日韩在线视频一区| 欧美激情aaaa| 欧美风情在线观看| 欧美成年人网站| 麻豆免费精品视频| 久久免费精品日本久久中文字幕| 亚洲欧美韩国| 午夜精品在线看| 亚洲主播在线| 亚洲一区二区三区精品动漫| 一区二区三区日韩| 在线综合亚洲| 中国女人久久久| 亚洲午夜精品一区二区三区他趣| 日韩午夜在线观看视频| 亚洲精品中文字幕女同| 亚洲欧洲在线一区| 亚洲免费观看高清完整版在线观看| 亚洲高清色综合| 亚洲激情国产精品| 亚洲人成网站在线观看播放| 亚洲国产精品免费| 亚洲激情视频网站| 亚洲精品永久免费| 亚洲最新中文字幕| 亚洲校园激情| 欧美一区二区三区久久精品 | 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲亚洲精品在线观看| 亚洲免费中文字幕| 久久精品视频在线看| 老司机精品导航| 欧美日韩免费观看一区二区三区| 欧美天堂亚洲电影院在线播放| 国产精品成人免费| 国产美女精品免费电影| 黄色在线一区| 亚洲免费观看在线观看| 亚洲一区免费视频| 久久精品国产亚洲精品 | 亚洲国产日本| 999亚洲国产精| 性做久久久久久久免费看| 久久久久久国产精品mv| 欧美激情一区二区三区在线| 国产精品国码视频| 黑人操亚洲美女惩罚| 91久久线看在观草草青青| 亚洲视频精品| 久久这里只有精品视频首页| 亚洲欧洲精品一区二区三区不卡| 99国产精品自拍| 久久精品国产久精国产爱| 欧美精品日韩一本| 国产综合欧美在线看| 一本色道久久综合狠狠躁篇怎么玩 | 一区二区三区久久| 久久久久国产精品一区二区| 欧美日韩精品中文字幕| 激情五月婷婷综合| 一区二区三区久久精品| 久久精品日产第一区二区三区| 亚洲第一久久影院| 亚洲女同精品视频| 欧美激情女人20p| 国产亚洲欧洲| 亚洲综合激情| 亚洲激情成人网| 午夜欧美大尺度福利影院在线看| 欧美+亚洲+精品+三区| 国产日韩欧美夫妻视频在线观看| 亚洲欧洲日本一区二区三区| 欧美一级理论片| 亚洲精品无人区| 久久婷婷一区| 国产在线不卡| 午夜日韩av| 亚洲美女黄网| 蜜桃久久av| 在线观看欧美视频| 久久久av毛片精品| 亚洲欧美色一区| 国产精品久久久久三级| 亚洲美女毛片| 亚洲国产精品ⅴa在线观看 | 欧美四级在线观看| 日韩视频不卡中文| 欧美激情1区2区| 久久午夜国产精品| 一区二区视频免费完整版观看| 欧美一区在线视频| 亚洲一区三区视频在线观看| 欧美色欧美亚洲高清在线视频| 亚洲精品女av网站| 欧美成人午夜激情视频| 久久夜色撩人精品| 在线精品国精品国产尤物884a| 久久在线播放| 久久久久久久久久久一区| 激情婷婷亚洲| 蜜桃精品一区二区三区 | 久久福利资源站| 国产亚洲va综合人人澡精品| 久久国产精彩视频| 欧美中文字幕在线播放| 国产一区二区三区成人欧美日韩在线观看| 亚洲一区二区在| 亚洲欧美日韩一区二区三区在线|