當(dāng)我們?cè)?Android 中處理 Image 時(shí),常因?yàn)?Java 性能和效率問題導(dǎo)致達(dá)不到我們期望的效果,例如進(jìn)行Camera 采集視頻流的原始幀時(shí)我們需要每秒能夠獲取足夠的幀率才能流暢的顯示出來,這也是為什么美顏 SDK 和圖像識(shí)別等這類 SDK 都是基于 C / C++ 的原因之一。語言的特性也是關(guān)鍵因素點(diǎn),所以常常會(huì)在 Java 中調(diào)用 C / C++ 的 API 來進(jìn)行相關(guān)操作。
因最近工作需求是替代 Camera 的原始打視頻流,數(shù)據(jù)源是 Bitmap 格式的,如果使用 Java 的方法來進(jìn)行Bitmap 的旋轉(zhuǎn),轉(zhuǎn)換為 YUV 類型的 NV21 、YV12 數(shù)據(jù)的話,那么少說也要 15FPS 的視頻就尷尬的變成了5FPS的PPT幻燈片了。關(guān)于YUV的各種格式區(qū)別請(qǐng)見我的博客:直播必備之YUV使用總結(jié) —— Android常用的幾種格式:NV21/NV12/YV12/YUV420P的區(qū)別,而Google提供了一套Image處理的開源庫libyuv(科學(xué)上網(wǎng)),可高效的對(duì)各類Image進(jìn)行Rotate(旋轉(zhuǎn))、Scale(拉伸)和Convert(格式轉(zhuǎn)換)等操作。
libyuv官方說明
libyuv is an open source project that includes YUV scaling and conversion functionality.
Scale YUV to prepare content for compression, with point, bilinear or box filter.
Convert to YUV from webcam formats.
Convert from YUV to formats for rendering/effects.
Rotate by 90/180/270 degrees to adjust for mobile devices in portrait mode.
Optimized for SSE2/SSSE3/AVX2 on x86/x64.
Optimized for Neon on Arm.
Optimized for DSP R2 on Mips.
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26