亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

基于現有圖像數據創建自定義像素格式的BufferedImage

2019-11-14 14:53:07
字體:
來源:轉載
供稿:網友

在最近的一個項目中,需要實現 Mac OS X 環境下的攝像頭圖像實時捕獲并轉換為 java 中的 BufferedImage 對象。首先通過開發一個本地庫實現 Mac OS X 的攝像頭圖像捕獲,采用的是 Apple 推薦的新的 AVFoundation 框架,攝像頭圖像格式設置為 kCVPixelFormatType_32ARGB(設置成其他的測試了無法得到圖像,系統不支持),通過 delegate 方式得到 CMSampleBufferRef 類型的 sample buffer 后,需要通過 CMSampleBufferGetImageBuffer 函數將其轉換為 CVImageBufferRef 類型的圖像緩沖(因為這里捕獲的是圖像數據,并不是采樣數據,所以不能用 CMSampleBufferGetDataBuffer)。然后通過 CVPixelBufferGetBaseAddress 函數得到圖像緩沖的首地址,用 CVPixelBufferGetDataSize 函數得到圖像緩沖區數據大小,但這里千萬要注意,不要以為這時獲取的圖像緩沖區數據就可以通過Java 的 Raster 和 DataBuffer 等方式來直接填充 Java 中的 BufferedImage(這里假定 BufferedImage 采用 TYPE_INT_ARGB,因為想著對應 kCVPixelFormatType_32ARGB)。因為這么做了會發現圖像顏色完全是錯亂的,事實上,我們通過計算就可以知道,對應高、寬下的 TYPE_INT_ARGB 格式的 BufferedImage 圖像數據大小為 width × height × 4 字節(因為這時一個像素為 int 類型,4 字節大小),但 CVPixelBufferGetDataSize 得到的圖像數據大小總比前者要多 4 個字節,可能是保存了其他的一些信息。所以這里直接創建 TYPE_INT_ARGB 格式的 BufferedImage 然后用 Raster 以及 DataBuffer 等方式進行填充是行不通的。

這里就需要采取另外的方式,用 DataBufferByte、ComponentSampleModel、WritableRaster、ColorSpace、ColorModel 來構建 BufferedImage,其實也是使用了 BufferedImage 的另一種不常用的、但效率非常高的構造函數模式。當然,前提是還需要通過 CVPixelBufferGetBytesPerRow 函數得到圖像中每個掃描行的字節數,通過 CVPixelBufferGetHeight 函數得到圖像的高度,通過 CVPixelBufferGetWidth 函數得到圖像的寬度,后面會用得上。具體如以下代碼:

1 DataBufferByte dataBufferByte = new DataBufferByte(new byte[][] {dataBytes}, dataSize); // 這里假定 dataBytes 保存了本地獲取的圖像數據,dataSize 為圖像數據大小(總是比“w * h * 每像素字節數”計算出來要大一點)2 ComponentSampleModel componentSampleModel = new ComponentSampleModel(DataBuffer.TYPE_BYTE, width, height, 4, bytesPerRow, new int[] {1, 2, 3, 0}); // 自定義 BufferedImage 中的圖像格式,還是以字節來存儲每個像素,具體構造函數的說明見 javadoc api3 WritableRaster writableRaster = Raster.createWritableRaster(componentSampleModel, dataBufferByte, new Point(0, 0)); // 創建包含具體圖像數據的柵格陣列4 ColorSpace colorSpace = ColorSpace.getInstance(ColorSpace.CS_sRGB); // 創建 RGB 顏色空間5 int[] nBits = {8, 8, 8, 8}; // 對應源圖像數據的 ARGB,因為源圖像數據采用 32ARGB,等效于 4 個字節,每個字節按順序分別表示 alpha、red、green、blue6 ColorModel colorModel = new ComponentColorModel(colorSpace, nBits, true, false, Transparency.TRANSLUCENT, DataBuffer.TYPE_BYTE); // 創建顏色模式7 BufferedImage bufferedImage = new BufferedImage(colorModel, writableRaster, false, null); // 構建自定義像素格式的 BufferedImage

這種方式就不會出現問題了,本地庫捕獲的實時攝像頭圖像能夠正確填充到 Java 的 BufferedImage 中,而且效率非常高。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品999| 欧美性极品少妇精品网站| 亚洲自拍小视频| 国产日韩精品在线播放| 黄色精品一区二区| 亚洲自拍偷拍色片视频| 九色精品免费永久在线| 中文字幕日韩精品在线| 国外成人免费在线播放| 国产日韩欧美另类| 国产精品久久久av久久久| 亚洲精品久久久久久久久久久久| 亚洲a级在线播放观看| 亚洲精品二三区| 2020久久国产精品| 欧美日韩一区二区免费视频| 国产成人精品久久亚洲高清不卡| 亚洲综合中文字幕在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 成人福利在线视频| 亚洲欧美制服丝袜| 热99精品只有里视频精品| 久久99久久99精品中文字幕| 欧美成人一区在线| 色中色综合影院手机版在线观看| 国产精品成av人在线视午夜片| 国产精品视频男人的天堂| 欧美性资源免费| 欧美成人高清视频| 精品久久久久久电影| 日本久久久久久| 午夜精品久久久久久久99黑人| 日韩精品极品视频| 中文字幕亚洲一区二区三区五十路| 裸体女人亚洲精品一区| 在线观看久久久久久| 亚洲性生活视频| 国产一区二区美女视频| 久久国产精品久久精品| 91免费看国产| 日本成人黄色片| 欧美乱大交xxxxx| 成人福利视频网| 国产97色在线|日韩| 亚洲欧洲在线免费| 欧美精品久久久久久久免费观看| 国产ts一区二区| www国产91| 狠狠躁天天躁日日躁欧美| 日韩欧美亚洲综合| 国产成人精品a视频一区www| 欧美人成在线视频| 亚洲国模精品私拍| 亚洲激情视频在线| 人人做人人澡人人爽欧美| 亚州精品天堂中文字幕| 欧美成人一区二区三区电影| 亚洲天堂av图片| 亚洲国产精品高清久久久| 亚洲国产日韩欧美在线动漫| 中文字幕免费精品一区| 亚洲另类欧美自拍| 亚洲成人中文字幕| 欧美在线视频导航| 亚洲网站视频福利| 国产精品专区第二| 欧美电影免费观看高清| 大胆欧美人体视频| 日本精品免费观看| 热久久视久久精品18亚洲精品| 国内偷自视频区视频综合| 日韩乱码在线视频| 欧美在线国产精品| 欧美午夜性色大片在线观看| 97人人模人人爽人人喊中文字| 欧美激情一二三| 国产在线视频2019最新视频| 亚洲天堂av网| 国模精品视频一区二区| 亚洲欧美日韩精品| 91亚洲国产成人久久精品网站| 少妇av一区二区三区| 欧美日韩精品在线视频| 欧美性猛交丰臀xxxxx网站| 一区二区三区回区在观看免费视频| 色噜噜国产精品视频一区二区| 精品视频偷偷看在线观看| 日韩av最新在线观看| 亚洲欧美一区二区三区在线| 在线播放国产一区二区三区| 日韩电影大片中文字幕| 91精品国产91久久久久久不卡| 国产中文日韩欧美| 久久久久久久91| 欧洲中文字幕国产精品| 91国偷自产一区二区三区的观看方式| 国产脚交av在线一区二区| www.日本久久久久com.| 久久久人成影片一区二区三区| 欧美性猛交99久久久久99按摩| 欧美性感美女h网站在线观看免费| 国产精品久久久一区| 91精品国产综合久久香蕉的用户体验| 美女少妇精品视频| 成人h视频在线观看播放| 一区二区三区美女xx视频| 日韩在线视频一区| 国产精品久久久久99| 精品国产一区二区三区四区在线观看| 日韩在线视频导航| 国产精品免费一区二区三区都可以| 国产精品自产拍高潮在线观看| 精品av在线播放| 96pao国产成视频永久免费| 亚洲中国色老太| 欧美激情在线狂野欧美精品| 精品美女永久免费视频| 久久久人成影片一区二区三区| xxxx性欧美| 亚洲精品少妇网址| 日韩资源在线观看| 国产精品国产福利国产秒拍| 欧美极品在线播放| 国产精品999| 中文字幕亚洲欧美一区二区三区| 久久综合九色九九| 亚洲第一区在线观看| 91在线视频导航| 97在线视频免费播放| 91夜夜揉人人捏人人添红杏| 国产精品男人爽免费视频1| 欧美日韩成人在线播放| 奇米影视亚洲狠狠色| 91高清在线免费观看| 国产成人极品视频| 成人在线视频网站| 国产欧美精品一区二区三区介绍| 欧美疯狂做受xxxx高潮| 国产成+人+综合+亚洲欧美丁香花| 国产亚洲视频中文字幕视频| 91亚洲精品一区二区| 狠狠躁18三区二区一区| 国产v综合ⅴ日韩v欧美大片| 欧美激情三级免费| 97成人精品区在线播放| 91精品国产高清自在线看超| 欧美美女操人视频| 亚洲一区二区三区成人在线视频精品| 国模叶桐国产精品一区| 91精品啪aⅴ在线观看国产| 国产成人在线一区二区| 日韩美女视频免费看| 欧美激情一级二级| 久久久国产精品视频| 日韩性生活视频| 国产精品99导航| 91久久久久久| 久久久久一本一区二区青青蜜月| 久久精品中文字幕一区| 国产成人高潮免费观看精品| 欧美成aaa人片在线观看蜜臀| 亚洲精品欧美极品| 久久电影一区二区| 欧美成人午夜激情在线|