<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于S3C44B0開發(fā)板的圖像采集方法研究

          基于S3C44B0開發(fā)板的圖像采集方法研究

          作者: 時間:2012-04-13 來源:網(wǎng)絡(luò) 收藏


          程序詳細(xì)流程如下:

          65.jpg

          網(wǎng)眼V3000攝像頭支持depth=24,palette=VIDEO_PALETTE_RGB24,輸出圖片為BMP格式,因此在程序中需要對BMP的格式進(jìn)行定義。

          BMP格式包括位圖文件頭:struct tatBITMAPFILEHEADER

          位圖信息頭:struct tagBITMAPINFOHEADER

          彩色表:struct tagRGBQUAD,

          需要說明的是,BMP格式的數(shù)據(jù)陣列存儲的掃描行是由下往上存儲的,即第一個像素在左下角,最后一個像素在右上角,因此在讀取的時候要注意。
          (1)用read()方法獲取圖片,將圖片數(shù)據(jù)直接讀到用戶內(nèi)存空間,然后寫入文件。
          read(fd,data,size); //將fd所指位置size大小的數(shù)據(jù)讀寫到data內(nèi)存空間
          fwrite(bf,14,1,fp); //BMP文件頭信息寫入文件
          fwrite(bi,40,1,fp); //BMP位圖信息頭信息寫入文件
          fwrite(buffer,ImageSize,1,fp); //圖片寫入文件

          (2)用mmap()內(nèi)存映射方法,需要ioctl(fd,VIDIOCGMBUF,mbuf)獲取緩沖區(qū)的幀信息,調(diào)用mmap()函數(shù)把設(shè)備文件映射到內(nèi)存區(qū),這樣就可以把讀到的信息,讀寫到文件里。內(nèi)存映射法加速了I/O的訪問速度,它使得各進(jìn)程指向一塊共享內(nèi)存空間,各進(jìn)程可以隨時進(jìn)行訪問,因此內(nèi)存映射獲取圖片的方法速度要比read()方法快一些。
          //設(shè)置水平和垂直分辨率及、彩色顯示格式
          vmmap.height=height;
          vmmap.width=width;
          vmmap.format=VIDEO_PALETTE_RGB24;
          //調(diào)用mmap進(jìn)行內(nèi)存映射
          buffer=mmap(0,buf.size,PORT_READ|PORT_WRITE,MAP_SHARD,fd,0);
          picture.depth=24;
          ioctl(fd,VIDIOCSPICT,picture)
          //圖像
          if(ioctl(fd,VIDIOCMCAPTURE,vmmap)0)
          {perror(VIDIOCMCAPTURE);
          return 0;
          }
          //判斷是否完成
          if (ioctl(fd,VIDIOCSYNC,buf)0)
          perror(VIDIOCSYNC);



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();