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

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 鐘謝偉 閱讀(1039) 評論(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>
            亚洲激情婷婷| 美女亚洲精品| 国内精品久久久| 午夜精品亚洲一区二区三区嫩草| 久久亚洲综合色一区二区三区| 欧美风情在线| 国产精品视频xxxx| 亚洲高清不卡| 国产欧美日韩另类视频免费观看 | 午夜在线视频观看日韩17c| 午夜欧美大尺度福利影院在线看| 狂野欧美一区| 在线一区二区视频| 噜噜噜久久亚洲精品国产品小说| 久久久久久一区二区三区| 99精品视频免费观看| 国产主播一区二区三区四区| 亚洲尤物在线| 亚洲欧美韩国| 欧美午夜精品电影| 一本久道久久综合婷婷鲸鱼| 欧美极品在线播放| 亚洲精品小视频在线观看| av不卡在线观看| 欧美/亚洲一区| 麻豆91精品91久久久的内涵| aa级大片欧美三级| 中文亚洲字幕| 国产欧美综合在线| 久热国产精品| 性欧美暴力猛交另类hd| 午夜精品久久久久久久蜜桃app | 久久久国产午夜精品| 巨胸喷奶水www久久久免费动漫| 欧美激情第3页| 亚洲国产电影| 蜜桃av一区二区在线观看| 亚洲国产欧美一区二区三区丁香婷| 国产日韩亚洲欧美精品| 最新国产乱人伦偷精品免费网站| 亚洲国产精品久久91精品| 欧美日韩国产专区| 亚洲一区免费观看| 亚洲欧美另类国产| 亚洲国产一区在线| 亚洲免费在线| 欧美人妖另类| 亚洲女人天堂av| 久久riav二区三区| 国产精品一卡二| 久久综合电影一区| 亚洲香蕉成视频在线观看| 亚洲欧美卡通另类91av| 日韩视频在线一区二区三区| 国产精品日韩在线观看| 久久在线观看视频| 老司机精品久久| 亚洲在线视频免费观看| 久久视频在线看| 激情综合电影网| 国产精品日本| 久久中文在线| 亚洲美洲欧洲综合国产一区| 亚洲成色999久久网站| 欧美日韩三区| 午夜欧美大片免费观看| 久久久久久久综合日本| 久久久久久亚洲精品中文字幕 | 久久亚洲欧洲| 亚洲一区二区三区高清 | 99精品福利视频| 亚洲电影免费观看高清完整版在线观看 | 精品成人a区在线观看| 日韩午夜黄色| 免费日韩av| 久久精品夜色噜噜亚洲aⅴ| 久久久水蜜桃| 欧美风情在线| 午夜欧美电影在线观看| 久久性色av| 伊人夜夜躁av伊人久久| 中文av字幕一区| 欧美激情第10页| 亚洲精品欧美精品| 欧美一区二区| 欧美bbbxxxxx| 久久―日本道色综合久久| 欧美一区二区三区四区视频| 欧美成人一品| 国产精品久久久久久久app| 国产欧美一二三区| 欧美一区二区三区在线免费观看| 亚洲精品久久在线| 狠狠做深爱婷婷久久综合一区| 中日韩视频在线观看| 一本大道av伊人久久综合| 欧美—级高清免费播放| 国精品一区二区| 亚洲国产欧美日韩精品| 亚洲午夜精品| 久久久久亚洲综合| 亚洲电影网站| 久久久久免费| 蜜臀av一级做a爰片久久| 国产精品黄页免费高清在线观看| 亚洲成人原创| 亚洲一区二区av电影| 亚洲欧洲美洲综合色网| 欧美大片在线观看一区二区| 欧美日韩亚洲一区三区| 亚洲国产精品传媒在线观看| 欧美激情aaaa| 免费一区视频| 黄色成人在线| 美女网站在线免费欧美精品| 欧美大片一区二区| 亚洲欧美日韩中文视频| 久久天堂国产精品| 亚洲国产高清一区二区三区| 亚洲欧美日韩另类| 激情综合激情| 亚洲精选久久| 欧美国产专区| 国产日韩一区二区三区| 亚洲美女av在线播放| 欧美理论电影网| 欧美中文字幕在线播放| 欧美成人精品在线| 久久精品综合网| 国产精品国产a级| 蜜桃av噜噜一区| 狠狠色噜噜狠狠色综合久| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品视频不卡| 亚洲精品欧洲精品| 韩国一区二区在线观看| 这里是久久伊人| 性久久久久久久久久久久| 欧美黄免费看| 午夜亚洲伦理| 国产乱理伦片在线观看夜一区 | 欧美精品v日韩精品v韩国精品v| 久久国产乱子精品免费女| 亚洲激情在线观看| 国产精一区二区三区| 国产日韩欧美一区二区三区四区 | 亚洲大胆女人| 亚洲综合精品四区| 亚洲一区免费网站| 日韩视频在线永久播放| 欧美性天天影院| 久久婷婷色综合| 亚洲国产精品久久久久秋霞蜜臀| 免费欧美网站| 久久精品二区| 亚洲欧美精品中文字幕在线| 亚洲一级在线| 亚洲高清视频一区二区| 性高湖久久久久久久久| 欧美激情91| 亚洲午夜电影| 欧美一区二区三区免费观看视频| 国产一级揄自揄精品视频| 久久久久国产一区二区| 国产日产欧美一区| 亚洲国产高清一区| 一区二区在线视频| 欧美暴力喷水在线| 亚洲美女91| 国产一区二区三区在线免费观看 | 亚洲欧洲日韩女同| 亚洲裸体视频| 一区二区三欧美| 欧美性大战xxxxx久久久| 欧美成人国产| 国产日韩欧美电影在线观看| 欧美成人亚洲| 在线日韩一区二区| 欧美亚洲三区| 美日韩在线观看| 久久久久久久综合日本| 欧美一区二区性| 亚洲精品久久久久久久久| 亚洲欧美日韩精品久久久久| 性欧美办公室18xxxxhd| 亚洲高清视频一区二区| 欧美在线视频免费| 欧美亚洲视频一区二区| 亚洲欧洲在线播放| 久久精品国产亚洲精品| 亚洲第一精品福利| 欧美日韩福利视频| 欧美一区二区高清| 亚洲香蕉网站| 香蕉免费一区二区三区在线观看 | 久久久人成影片一区二区三区观看| 欧美视频中文字幕| 欧美中文在线免费| 亚洲美女电影在线| 亚洲第一主播视频|