CUDA總結1 OpenCV與CUDA簡介

2021-10-09 09:00:10 字數 1192 閱讀 2667

因為演算法的需要,正常的cpu演算法速度不夠需要進行加速,opencv中正好加入了gpu計算的模組,opencv中有兩種gpu的加速方式,一種是通用標準的opencl,另一種是nvidia的cuda加速。opencl是蘋果公司提出的一種通用標準,多種平台支援的標準。cuda是nvidia提出的平行計算平台,只有nvidia的顯示卡支援,但是比起opencl,cuda在使用上更方便,因為opencl是開放標準,封裝上做的可能沒有那麼好,現在nvidia的顯示卡使用的多一些,所以cuda也就比較多用。

使用opencv的cuda必須要編譯附加庫的模組contrib,這個附加庫中又許多核心庫沒有的內容,如:特徵匹配,跟蹤,cuda等內容,個人不太喜歡用cmake,但是還不能不用,因為cmake配置有點錯誤,編譯的時候就會報錯,編譯時間長的話,到最後才報錯就特別坑,尤其是cuda的編譯,cuda的編譯時間特別的長,主要是因為cuda存在對計算能力的相容性的問題,預設要編譯好多架構,這樣會導致編譯時間特別的長,我機器的顯示卡是gtx1050ti,所以計算能力屬於10系列,16年後發布的10系列的顯示卡基本上都在5.0以上,我們日常用的機器中安裝的顯示卡基本上都是gtx系列,nvidia最新發布的顯示卡能達到8,不過我的cuda9.2相容只能到7.0,再高編譯的時候就報錯。cuda編譯的時候需要注意必須提前安裝cuda,否則編譯也不通過,還有就是我沒有安裝cuda的dnn,所以編譯的時候沒有選擇dnn,如果想要使用dnn,還要再安裝cuda對應版本的dnn,不然編譯仍然會報錯。

另外opencv編譯的時候如果不想編譯出一大堆的lib檔案,可以選擇world選項,之後編譯的時候會生成world.lib,但是有一點不太好就是,如果編譯有問題要全部重新生成。

編譯成功後,需要引入cuda相關的標頭檔案,opencv3以後的標頭檔案都以cuda開頭,最長用的應該是

#include

//矩陣相關的計算

#include

//各種濾波器

opencv中也為cuda影象運算提供了一種型別gpumat,與mat類似,同時cuda的呼叫封裝與不同的呼叫也基本沒有差距,只不過屬於cv::cuda空間。

gpumat gpu;

mat mat;

gpu.

upload

(mat)

;dosomething()

;gpu.

download

(mat)

;

opencv中常用cuda函式總結

bitwise and bitwise not bitwise or bitwise xor compare divide 除 exp log max min multiply threshold 二值化,但要指定設定閾值 calchist createboxfilter 建立乙個規範化的2d框過濾...

opencv與cuda的結合使用

opencv的gpu模組提供了有cuda實現的很多並行函式,但有時候需要自己寫並行函式並與已有的opencv函式結合使用,而opencv是乙個開源的函式庫,我們可以很輕鬆的看到其內部的實現機制,可以根據他已有的函式比葫蘆畫瓢來寫乙個自己的cuda並行函式。所需要使用的gpu的關鍵的類有 gpumat...

樹莓派4B學習筆記1 openCV的安裝

更換映象源 更換pip源pip install scrapy i pypi.tuna.tsinghua.edu.cn 樹莓派官方攝像頭python2版本opencv的安裝 python3版本的安裝 在python3中測試opencv在終端中輸入 python2 並回車 import cv2 cv2....