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

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年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

導航

統計

常用鏈接

留言簿(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>
            日韩网站在线观看| 国产精品实拍| 激情久久婷婷| 久久综合给合久久狠狠狠97色69| 亚洲午夜精品久久久久久app| 国产精品久久久久久久久久直播| 亚洲男人影院| 亚洲免费中文| 狠狠久久亚洲欧美| 亚洲电影成人| 欧美精品久久久久久久免费观看| 一本大道久久a久久综合婷婷| 夜夜嗨av一区二区三区网站四季av| 欧美午夜精品久久久久久孕妇| 午夜在线a亚洲v天堂网2018| 欧美亚洲网站| 日韩午夜精品| 午夜视频一区二区| 91久久久久久久久| 亚洲网站在线播放| 亚洲国产精品久久久久秋霞不卡 | 欧美激情a∨在线视频播放| 日韩午夜电影| 久久99伊人| 一区二区福利| 久久黄金**| 一区二区黄色| 久久久伊人欧美| 亚洲欧美国产毛片在线| 久久嫩草精品久久久精品| 中日韩在线视频| 久久精品在线免费观看| 亚洲视频一二| 玖玖玖免费嫩草在线影院一区| 亚洲视频一二三| 久久青青草综合| 欧美在线观看天堂一区二区三区| 免费黄网站欧美| 欧美一区2区视频在线观看 | 亚洲一区二区动漫| 亚洲精品乱码久久久久久按摩观| 亚洲尤物在线| 亚洲天堂偷拍| 欧美国产欧美综合| 快播亚洲色图| 国产日产欧产精品推荐色 | 久久激情视频| 国产精品超碰97尤物18| 亚洲精品国产视频| 在线免费精品视频| 欧美一区二区三区四区高清| 在线一区二区三区四区| 欧美mv日韩mv国产网站| 麻豆精品视频在线| 国产亚洲欧美另类一区二区三区| 一区二区三区日韩在线观看| 亚洲欧洲日产国产网站| 久久网站免费| 乱人伦精品视频在线观看| 国产欧美精品va在线观看| 亚洲婷婷在线| 午夜激情亚洲| 国产精品久久久91| 在线一区二区三区做爰视频网站| 亚洲精品亚洲人成人网| 欧美成人免费播放| 欧美激情在线| 99精品热视频只有精品10| 欧美成人免费视频| 最新日韩av| 一区二区日韩| 国产精品极品美女粉嫩高清在线| 最新日韩中文字幕| 在线中文字幕一区| 国产精品久久久久aaaa| 亚洲男人第一网站| 欧美一级二区| 黑人极品videos精品欧美裸| 久久精品一二三| 亚洲高清不卡在线| 一区二区欧美在线| 国产精品乱码一区二区三区| 性高湖久久久久久久久| 久久久999国产| 亚洲黄色有码视频| 欧美日韩国产综合视频在线观看| 一本久久综合亚洲鲁鲁| 欧美一区二区三区婷婷月色| 国产亚洲精品综合一区91| 久久久国产精品一区二区中文 | 免费在线看成人av| 99精品国产一区二区青青牛奶 | 欧美在线影院| 亚洲高清免费| 亚洲欧美日韩综合| 精品动漫一区| 欧美人成在线视频| 亚洲欧美日韩精品久久久| 免费看亚洲片| 亚洲一级影院| 今天的高清视频免费播放成人 | 国产精品乱码一区二区三区| 久久久久久久综合| 亚洲毛片在线看| 久久中文字幕一区二区三区| 亚洲精品欧美精品| 国产日韩精品在线观看| 欧美国产高潮xxxx1819| 午夜精品区一区二区三| 91久久综合亚洲鲁鲁五月天| 欧美一区二区成人| 亚洲精品日本| 国产性色一区二区| 欧美日韩亚洲三区| 美女在线一区二区| 欧美中文字幕在线播放| 亚洲最新在线| 亚洲国产日韩欧美| 久久夜色精品国产欧美乱极品| 国产精品99久久久久久久vr| 亚洲成人在线| 国产一区二区精品久久91| 国产精品福利久久久| 欧美成人国产一区二区| 久久久中精品2020中文| 欧美一区二区三区四区高清 | 欧美有码在线观看视频| 一本一本久久a久久精品综合麻豆| 欧美成人dvd在线视频| 久久久99免费视频| 欧美一区二区三区四区在线观看| 在线一区欧美| 一级成人国产| 日韩午夜在线电影| 亚洲精品一区二区在线| 亚洲第一精品在线| 亚洲大片免费看| 黄色精品一区| 一区二区三区在线免费视频| 狠狠久久亚洲欧美专区| 国产一区二区丝袜高跟鞋图片| 国产欧美视频一区二区| 国产欧美综合一区二区三区| 国产精品久久久久久久久婷婷| 欧美性生交xxxxx久久久| 欧美日韩久久| 欧美日韩亚洲视频一区| 国产精品激情| 国产婷婷色一区二区三区四区| 国产美女精品视频| 国产一在线精品一区在线观看| 国产日韩亚洲| 激情亚洲成人| 亚洲精品日日夜夜| 一区二区三区欧美| 亚洲永久精品国产| 欧美在线看片| 老司机久久99久久精品播放免费| 久久婷婷麻豆| 欧美激情网友自拍| 999亚洲国产精| 亚洲一区亚洲| 久久久免费精品| 欧美大片免费观看| 欧美日韩综合视频| 国产乱码精品一区二区三| 国产视频久久| 亚洲人成网站精品片在线观看| 99国产精品视频免费观看一公开| 亚洲一区三区电影在线观看| 性色av香蕉一区二区| 久久综合99re88久久爱| 亚洲国产欧美精品| 亚洲午夜精品一区二区三区他趣| 亚洲欧美韩国| 欧美激情精品久久久久久黑人| 国产精品高清免费在线观看| 激情成人亚洲| 亚洲一区三区视频在线观看| 久久一区国产| 亚洲精品中文字幕女同| 亚洲欧美日韩精品一区二区| 久久久久久久久久码影片| 欧美人成在线视频| 黄色成人av网| 亚洲一区二区三| 欧美国产一区二区| 亚洲欧美在线x视频| 欧美久久影院| 黄色一区二区三区四区| 亚洲一区二区三区三| 欧美大尺度在线观看| 亚洲一区国产| 欧美精品亚洲一区二区在线播放| 国产欧美一区二区视频| 在线亚洲欧美专区二区| 欧美激情在线狂野欧美精品| 欧美一区二区三区婷婷月色| 欧美美女bbbb| 亚洲国产精品久久人人爱蜜臀 |