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

CCD camera類設(shè)計(jì)及簡易實(shí)現(xiàn)

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

   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: }

將函數(shù)RunCamera單獨(dú)起來主要是為了實(shí)現(xiàn)實(shí)時(shí)成像。

不過還不清楚如何進(jìn)行實(shí)時(shí)成像,采用onTimer嗎?

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


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


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

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(1)

隨筆檔案

IT網(wǎng)站

My Friends

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久成年人视频| 欧美色图天堂网| 亚洲成人在线免费| 久久精彩免费视频| 久久久久高清| 欧美成人第一页| 欧美日韩国产一区精品一区| 欧美久久九九| 一区二区电影免费观看| 一区二区三区免费在线观看| 中文国产成人精品久久一| 亚洲女女女同性video| 欧美在线免费视屏| 欧美在线亚洲一区| 欧美激情中文字幕乱码免费| 国产精品成人播放| 国产一区二区精品久久91| 亚洲精品乱码久久久久久按摩观| 亚洲一区二区三区涩| 久久综合狠狠| 一本色道久久88综合日韩精品| 午夜精品国产更新| 欧美理论视频| 好男人免费精品视频| 亚洲视频在线看| 狼人社综合社区| 一区二区毛片| 久久综合九色综合欧美就去吻| 欧美日韩国产系列| 狠狠88综合久久久久综合网| 国产精品久久久久久一区二区三区| 激情成人av在线| 亚洲在线成人| 亚洲激情视频网站| 久久av二区| 国产精品久在线观看| 亚洲精品色婷婷福利天堂| 久久精品国产第一区二区三区| 亚洲精品日韩精品| 久久久久网址| 国产欧亚日韩视频| 亚洲欧美日韩精品| 99re热这里只有精品免费视频| 卡通动漫国产精品| 精品成人一区二区| 久久www免费人成看片高清| 亚洲三级影院| 欧美电影在线免费观看网站 | 91久久久亚洲精品| 久久在线免费观看| 久久精品一区二区| 国内自拍一区| 久久久综合香蕉尹人综合网| 亚洲免费视频在线观看| 国产精品久久久久久久久免费桃花| 亚洲最新视频在线| 亚洲精品日韩在线观看| 欧美国产免费| 亚洲免费高清视频| 亚洲国产精品t66y| 欧美福利在线观看| 一本大道久久a久久综合婷婷| 亚洲夫妻自拍| 欧美日本国产| 亚洲欧美综合国产精品一区| 亚洲午夜精品久久久久久浪潮| 欧美午夜精品电影| 欧美亚洲在线观看| 亚洲黄色影片| 欧美成人国产一区二区| 亚洲人成在线观看| 亚洲精品一级| 国产精品户外野外| 久久国产精品99久久久久久老狼 | 99精品热6080yy久久 | 久久久美女艺术照精彩视频福利播放 | 亚洲精品综合久久中文字幕| 久久综合狠狠综合久久综合88| 香港成人在线视频| 黑人巨大精品欧美一区二区| 模特精品在线| 欧美极品色图| 午夜精品福利一区二区三区av| 一区二区三区.www| 国产亚洲一区在线播放| 蜜桃av一区二区在线观看| 欧美大秀在线观看| 欧美一区二区精品| 欧美成人免费在线观看| 亚洲国产小视频| 国产精品美女久久久久久2018 | **性色生活片久久毛片| 亚洲欧洲在线看| 国产免费观看久久黄| 久久久亚洲影院你懂的| 久久亚洲影院| 亚洲在线观看视频| 久久av二区| 国产精品99久久久久久人| 欧美亚洲一级| 亚洲丝袜av一区| 浪潮色综合久久天堂| 亚洲一区二区三区精品动漫| 久久国产精品99精品国产| 亚洲精品国产品国语在线app| 一本久久综合亚洲鲁鲁| 亚洲国产高清一区| 午夜精品在线| 亚洲影院污污.| 欧美黄色片免费观看| 麻豆国产精品777777在线| 国产精品啊啊啊| 亚洲高清在线视频| 国内揄拍国内精品久久| 亚洲小说区图片区| 在线视频欧美日韩精品| 久久乐国产精品| 欧美激情一区在线| 久久手机精品视频| 国产精品欧美一区喷水| 免费久久99精品国产自| 国产欧美日韩一区二区三区在线| 亚洲理论在线| 日韩午夜av在线| 久久综合一区二区| 久久伊伊香蕉| 激情欧美国产欧美| 亚洲性感美女99在线| 一区二区三区精品国产| 欧美黑人一区二区三区| 欧美激情视频在线播放| 一区二区三区在线免费视频| 欧美在线啊v| 久久美女性网| 国内精品国语自产拍在线观看| 亚洲午夜一区| 欧美亚洲一区在线| 国产伦精品一区二区三区免费迷| 中文亚洲免费| 亚洲综合导航| 国产日韩欧美精品| 欧美在线视频一区| 噜噜噜91成人网| 日韩午夜电影在线观看| 欧美香蕉视频| 欧美一区三区三区高中清蜜桃 | 日韩一级大片| 欧美日韩午夜激情| 亚洲一区二区三区精品在线 | 一区二区三区国产精品| 欧美三级在线视频| 亚洲特黄一级片| 久久久久久黄| 亚洲区在线播放| 欧美日韩一区综合| 亚洲欧美日韩第一区| 午夜精品亚洲| 狠狠综合久久av一区二区小说| 久久理论片午夜琪琪电影网| 亚洲高清视频一区| 亚洲一区二区三区在线看| 国产日韩在线看| 久热精品视频| 中国av一区| 久久伊伊香蕉| 一区二区三区精密机械公司| 国产欧美精品一区二区色综合| 欧美一区二视频| 亚洲精品字幕| 久久亚洲欧洲| 亚洲一区二区三区久久| 激情欧美日韩一区| 国产精品igao视频网网址不卡日韩| 欧美一区二区三区啪啪| 亚洲国产精品专区久久| 欧美一区二区精美| 一个人看的www久久| 一色屋精品视频在线看| 欧美视频在线观看免费| 久久理论片午夜琪琪电影网| 99爱精品视频| 欧美69视频| 欧美一区二区三区男人的天堂| 在线观看亚洲视频| 影音先锋亚洲视频| 亚洲国产精品视频| 国产精品白丝av嫩草影院 | 欧美黄色小视频| 性色一区二区| 一区二区三区四区国产精品| 美国成人直播| 久久gogo国模啪啪人体图| 日韩五码在线| 亚洲福利视频免费观看| 国产一区二区三区在线免费观看 | 日韩一级精品视频在线观看| 久久一区二区三区av| 亚洲欧美久久久| 亚洲视频在线视频| 99国产精品视频免费观看|