OpenCV使用GPU


在使用OpenCV2.4.x的時候,以為不用重新編譯可以直接使用GPU模塊,不過在我使用的時候,發現使用getCudaEnabledDeviceCount()的時候,總是獲得是0,於是重新編譯OpenCV,這個是一個漫長的過程,尤其是編譯GPU模塊。對於如果編譯OpenCV網上教程都比較多,這個不在敘述,下面主要說一下surf的那個demo

運行結果如下:

image

主要要注意的在GPU中使用的Mat類型為GpuMat,讀取普通的Mat要通過upload轉變。主要也就是把內存中的Mat復制到顯存中。

使用的surf也是使用SURF_GPU,還有就是關鍵點的類型為GpuMat,這樣就申明在GPU中運算。

SURF_GPU surf;

GpuMat keypoints1GPU, keypoints2GPU;
    GpuMat descriptors1GPU, descriptors2GPU;
    surf(img1, GpuMat(), keypoints1GPU, descriptors1GPU);
    surf(img2, GpuMat(), keypoints2GPU, descriptors2GPU);

最終得到的關鍵點要從顯存中復制到內存當中,使用

surf.downloadKeypoints(keypoints1GPU, keypoints1);

 

在使用的時候,在GPU上執行,應該所有的類型都是GPU的類型,這個注意好,還有就是內存跟顯存之間的復制這個注意好,這樣基本的使用應該就沒有問題了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM