天天看點

OpenCV、OpenCL、OpenGL、OpenMP差別

文章轉載:http://blog.sina.com.cn/s/blog_8073c0de0102vt2g.html

OpenCV

        OpenCV的全稱是:Open Source Computer Vision Library。OpenCV是一個開源發行的跨平台計算機視覺庫,可以運作在Linux、Windows和Mac OS作業系統上。它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實作了圖像處理和計算機視覺方面的很多通用算法。

        OpenCV用C++語言編寫,它的主要接口也是C++語言,但是依然保留了大量的C語言接口。該庫也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口。這些語言的API接口函數可以通過線上文檔獲得。如今也提供對于C#,Ch, Ruby的支援。

OpenCL

OpenCL全稱Open Computing Language,開放運算語言,是第一個面向異構系統通用目的并行程式設計的開放式、免費标準,也是一個統一的程式設計環境,便于軟體開發人員為高性能計算伺服器、桌面計算系統、手持裝置編寫高效輕便的代碼,而且廣泛适用于多核心處理器(CPU)、圖形處理器(GPU)、Cell類型架構以及數字信号處理器(DSP)等其他并行處理器,在遊戲、娛樂、科研、醫療等各種領域都有廣闊的發展前景。

OpenGL

OpenGL(全寫Open Graphics Library)是個定義了一個跨程式設計語言、跨平台的程式設計接口規格的專業的圖形程式接口。它用于三維圖像(二維的亦可),是一個功能強大,調用友善的底層圖形庫。

OpenMP

OpenMp,全寫 Open Multi-Processing開源的并行程式設計,是由OpenMP Architecture Review Board牽頭提出的,并已被廣泛接受的,用于共享記憶體并行系統的多處理器程式設計的一套指導性的編譯處理方案(Compiler Directive)。OpenMP支援的程式設計語言包括C語言、C++和Fortran;而支援OpenMp的編譯器包括Sun Compiler,GNU Compiler和Intel Compiler等。OpenMp提供了對并行算法的高層的抽象描述,程式員通過在源代碼中加入專用的pragma來指明自己的意圖,由此編譯器可以自動将程式進行并行化,并在必要之處加入同步互斥以及通信。當選擇忽略這些pragma,或者編譯器不支援OpenMP時,程式又可退化為通常的程式(一般為串行),代碼仍然可以正常運作,隻是不能利用多線程來加速程式執行。

OpenMP和OpenCL都是用于高性能計算機,但是關鍵點不一樣,前者主要是基于CPU的并行,後者主攻是異構系統中GPU并行。

繼續閱讀