JsCV Core是一個開源的Javascript圖像處理核心庫,其在MIT許可下發布。
簡介
本質上JsCV是旨在:用Javascript做一些Computer Vision(計算機視覺)的事情的。
眾所周知,以Javascript偏弱的運算能力,其在浮點數計算上的誤差,以及Array數組的性能問題,和Javascript的單線程阻塞問題,這在IE6的年代幾乎是不可能的任務。
而如今,第五版Javascript和HTML5技術提供了一些可能性,TypedArray、ArrayBuffer、Canvas、Worker、WebGL等技術的出現,這使得Javascript漸漸可以脫離UI邏輯控制層面,完成一些圖像處理、計算機視覺,甚至是3D技術,以前前端想也不會想的東東。
比如:
- CamanJS:http://camanjs.com/
- PaintbrushJS:https://github.com/mezzoblue/PaintbrushJS
- liuliu前輩的ccv:http://liuliu.me/ccv/js/nss/
Core模塊是JsCV的圖像處理核心,包含了基礎類型Mat、Rect和一些常見的圖像處理函數。
當然本質上目前的Core並沒有太多實際用途,更多只是作為學習和研究用途。
不過,如果你想了解HTML5和Javascript 5,這可能是一個還可以的例子。
如果你想了解Javascript圖像處理的原理,這也是一個簡單的例子。
如果你深陷前端繁瑣的邏輯與布局頭昏腦脹,這也是一個很好的機會來了解Javascript的另一面魅力。
……
新年快到了,提前祝大家新年快樂,工作順利,合家美滿吧!
目錄結構
src - 源文件
dst - 處理后庫文件
example - 簡單例子
logMaker - 源代碼預處理程序
函數簡介
Mat — 基礎類型Mat的構造函數。
Rect — 基礎類型Rect的構造函數。
imread — 通過圖片讀取矩陣。
imwrite — 通過矩陣輸出圖片。
convertScaleAbs — 將矩陣取絕對值並轉成無符號8位類型。
addWeighted — 按比例疊加矩陣。
cvtColor — 顏色空間轉換函數。
brightnessContrast — 亮度及對比度調節函數。
copyMakeBorder — 虛擬邊緣創建函數。
blur — 均值平滑(分離濾波器版本)。
blurOld — 均值平滑(原版本)。
GaussianBlur — 高斯平滑(分離濾波器版本)。
GaussianBlurOld — 高斯平滑(原版本)。
medianBlur — 中值平滑。
bilateralFilter — 雙邊平滑(未完成,暫未開放)。
filter2D — 2D濾波器。可自定義內核。
separableLinearFilter — 可分離濾波器。
threshold — 閾值函數。
Sobel — Sobel算子。
Laplacian — Laplacian算子。
Scharr — Scharr算子。
remap — 重映射函數。
warpAffine — 仿射函數(存在的問題已解決)。
pyrDown — 高斯金字塔下一級。
pyrUp — 高斯金字塔上一級(和OpenCV一樣,此過程非下一級的逆過程)。
dilate — 膨脹(換成分離濾波器版本,不過3x3核幾乎沒有變化,只有再更大的核中才有明顯加速)。
erode — 腐蝕(換成分離濾波器版本,不過3x3核幾乎沒有變化,只有再更大的核中才有明顯加速)。
原理解釋系列文章
(暫時完結)
文檔
作者太懶了……目前還沒寫……
項目地址
https://github.com/miniflycn/JsCV
PS
v0.2做了一些優化工作,着力於算法優化上,如果大家發現一些bug和優化方法請告訴我,O(∩_∩)O謝謝。