女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenCV4.8 CUDA編程代碼教程

OpenCV學堂 ? 來源:OpenCV學堂 ? 2023-12-05 09:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

OpenCV4.8 CUDA編程代碼教程

預計閱讀時間 :12 mins

01CUDA支持模塊

OpenCV4支持通過GPU實現CUDA加速執行,實現對OpenCV圖像處理程序的加速運行,當前支持加速的模塊包括如下:

圖像背景分割

視頻編解碼

特征2D

卷積濾波

圖像處理

對象檢測

光流

雙目視覺

基本上包含了OpenCV圖像處理的主要功能,這里有一個地方需要特別注意,就是編譯時候選擇不同的CUDA版本,對上述模塊的支持略微不同。比如最新的CUDA10.0來說已經不支持級聯檢測器的加速啦。 要想利用GPU實現CUDA OpenCV加速,第一步當然是重新編譯OpenCV源碼實現對CUDA的支持,這個可以參考我之前發的文章

OpenCV4 | 如何讓傳統圖像處理實現三十倍加速的頂級技能

收到大家的反饋,覺得視頻比較好,所以又錄制了一個OpenCV4 + CUDA加速編譯與配置的視頻教程

02代碼演示教程

檢測CUDA設備支持,代碼如下:

cuda::getDevice());
intcount=cuda::getCudaEnabledDeviceCount();
printf("GPUDeviceCount:%d
",count);

運行截圖:

99c0b300-92ab-11ee-939d-92fbcf53809c.png

CUDA處理圖像的時候,首先需要把Mat圖像上載到CUDA數據單元GpuMat對象中去,然后調用CUDA支持的相關API進行處理,處理完成之后,再從GpuMat下載數據到原始Mat對象中,完成后續操作。以圖像灰度轉換為例,代碼演示如下:

//灰度轉換
Matsrc_host=imread("D:/images/test.png");
GpuMatsrc,gray;
src.upload(src_host);
cuda::cvtColor(src,gray,COLOR_BGR2GRAY);
Matgray_host;
gray.download(gray_host);
imshow("src",src_host);
imshow("gray",gray_host);
waitKey(0);

CUDA支持各種卷積處理,卷積處理支持盒子模糊、高斯模糊、圖像梯度(SobleScharr)、二階導數算子-拉普拉斯算子、以高斯模糊為例,代碼演示如下:

cv::Math_img1=cv::imread("D:/images/test1.png");
cv::GpuMatd_img1,d_result3x3,d_result5x5,d_result7x7;

//加載數據
d_img1.upload(h_img1);

//創建高斯
autofilter3x3=cv::createGaussianFilter(CV_8UC3,CV_8UC3,cv::Size(3,3),5);
autofilter5x5=cv::createGaussianFilter(CV_8UC3,CV_8UC3,cv::Size(5,5),5);
autofilter7x7=cv::createGaussianFilter(CV_8UC3,CV_8UC3,cv::Size(7,7),5);

//執行
filter3x3->apply(d_img1,d_result3x3);
filter5x5->apply(d_img1,d_result5x5);
filter7x7->apply(d_img1,d_result7x7);

//獲取結果
cv::Math_result3x3,h_result5x5,h_result7x7;
d_result3x3.download(h_result3x3);
d_result5x5.download(h_result5x5);
d_result7x7.download(h_result7x7);

//顯示
cv::imshow("OriginalImage",h_img1);
cv::imshow("Blurredwithkernelsize3x3",h_result3x3);
cv::imshow("Blurredwithkernelsize5x5",h_result5x5);
cv::imshow("Blurredwithkernelsize7x7",h_result7x7);

waitKey(0);
return;

CUDA支持圖像的角點檢測,支持Harris與shi-tomas角點檢測,以shi-tomas角點檢測為例,代碼演示如下:

Matsrc_host=imread("D:/images/building.png");
imshow("input",src_host);
GpuMatsrc,gray,corners;
Matdst;
src.upload(src_host);
cuda::cvtColor(src,gray,COLOR_BGR2GRAY);
autocorner_detector=cuda::createGoodFeaturesToTrackDetector(gray.type(),1000,0.01,15,3);
corner_detector->detect(gray,corners);
corners.download(dst);
printf("detectedcorners%d....
",corners.cols);
for(inti=0;i(0,i);
circle(src_host,pt,3,Scalar(b,g,r),2,8,0);
}
imshow("cornerdetect",src_host);
waitKey(0);
return;

我們都知道OpenCV中的雙邊模糊是處理速度比較慢的邊緣保留算法,但是它的CUDA版本完全可以做到實時運行無壓力,在線美顏很輕松,代碼演示如下:

try{
Matsrc_host=imread("D:/images/example.png");
imshow("input",src_host);
GpuMatsrc(src_host);
GpuMatdst;
cuda::bilateralFilter(src,dst,0,100,15,4);
Matdst_host;
dst.download(dst_host);
imshow("result",dst_host);
}
catch(constException&ec){
std::cout<

CUDA還支持各種特征匹配,以ORB特征匹配為例,實現CUDA版本的特征匹配會比沒有CUDA版本的速度快到10倍以上,基本也可以達到實時級別。以ORB特征匹配為例,代碼演示如下:

//gpudata
cuda::GpuMatd_object_image;
cuda::GpuMatd_scene_image;

//cuda::GpuMatd_keypoints_scene,d_keypoints_object;//GPUkeypoints
vectorh_keypoints_scene,h_keypoints_object;//CPUkeypoints
cuda::GpuMatd_descriptors_scene,d_descriptors_object;//GPUdescriptor

//ImageCPUuploadedtoGPU
d_object_image.upload(h_object_image);
d_scene_image.upload(h_scene_image);

//對象檢測
autoorb=cuda::create();
//Detectfeaturepointsandextractcorrespondingdescriptors
orb->detectAndCompute(d_object_image,cuda::GpuMat(),h_keypoints_object,d_descriptors_object);
orb->detectAndCompute(d_scene_image,cuda::GpuMat(),h_keypoints_scene,d_descriptors_scene);

//BruteForceViolenceMatcher
Ptrmatcher=cuda::createBFMatcher(NORM_HAMMING);
vector>d_matches;
matcher->knnMatch(d_descriptors_object,d_descriptors_scene,d_matches,2);

std::cout<good_matches;
for(intk=0;k0))
{
good_matches.push_back(d_matches[k][0]);
}
}
std::cout<

CUDA支持各種光流算法,這里需要注意的時候,最新的OpenCV4中出現的DIS光流還不支持CUDA加速調用。CUDA光流算法支持調用基本上都可以達到70幀左右。調用CUDA加速的稠密光流法, CPU版本運行在10幀左右,CUDA加速效果很明顯。

//GPU光流法
cuda::cvtColor(frame,gray,COLOR_BGR2GRAY);
farn->calc(preGray,gray,flow);

//GPU數據處理
vectormm;
cuda::split(flow,mm);
cuda::cartToPolar(mm[0],mm[1],gMag,gAng);

上面所有的測試都是基于OpenCV4.8+ GTX 3050TI的顯卡 + Windows 10 系統上完成。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3689

    瀏覽量

    95228
  • 代碼
    +關注

    關注

    30

    文章

    4900

    瀏覽量

    70693
  • OpenCV
    +關注

    關注

    32

    文章

    642

    瀏覽量

    42860
  • CUDA
    +關注

    關注

    0

    文章

    122

    瀏覽量

    14120

原文標題:10分鐘學會 OpenCV4.8 CUDA編程

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Ubuntu系統下編譯OpenCV4.8源碼記錄

    支持,所以就用這個開發板給大家演示一下如何在烏班圖系統下編譯OpenCV4.8源碼與如何編譯執行OpenCV C++應用。
    的頭像 發表于 10-27 16:07 ?2067次閱讀
    Ubuntu系統下編譯<b class='flag-5'>OpenCV4.8</b>源碼記錄

    CUDA編程教程

    Nvidia CUDA 2.0編程教程
    發表于 03-05 07:30

    創建包圍輪廓的圓形邊界_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:創建包圍輪廓的圓形邊界
    發表于 06-06 15:39 ?3次下載

    初級圖像混合_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:初級圖像混合
    發表于 06-06 15:39 ?3次下載

    圖像對比度、亮度值調整_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:圖像對比度、亮度值調整
    發表于 06-06 15:39 ?2次下載

    實現多種重映射綜合示例_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:實現多種重映射綜合示例
    發表于 06-06 15:39 ?4次下載

    形態學圖像處理綜合示例_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:形態學圖像處理綜合示例
    發表于 06-06 15:52 ?8次下載

    圖像顯示_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:圖像顯示
    發表于 06-06 15:52 ?5次下載

    圖像濾波綜合示例_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:圖像濾波綜合示例
    發表于 06-06 15:52 ?6次下載

    OpenCV進行基本繪圖_《OpenCV3編程入門》書本配套源

    OpenCV3編程入門》書本配套源代碼:用OpenCV進行基本繪圖
    發表于 05-11 16:46 ?36次下載

    用morphologyEx進行圖像開運算_《OpenCV3編程入門》配套源代碼

    OpenCV3編程入門》書本配套源代碼:用morphologyEx進行圖像開運算
    發表于 06-06 15:52 ?11次下載

    用指針訪問像素_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:用指針訪問像素
    發表于 06-06 15:54 ?9次下載

    CUDA簡介: CUDA編程模型概述

    CUDA 編程模型中,線程是進行計算或內存操作的最低抽象級別。 從基于 NVIDIA Ampere GPU 架構的設備開始,CUDA 編程模型通過異步
    的頭像 發表于 04-20 17:16 ?3361次閱讀
    <b class='flag-5'>CUDA</b>簡介: <b class='flag-5'>CUDA</b><b class='flag-5'>編程</b>模型概述

    如何在OpenCV中實現CUDA加速

    OpenCV4.x中關于CUDA加速的內容主要有兩個部分,第一部分是之前OpenCV支持的圖像處理與對象檢測傳統算法的CUDA加速;第二部分是Ope
    的頭像 發表于 09-05 10:03 ?5440次閱讀

    OpenCV4.8+CUDA+擴展模塊支持編譯指南

    OpenCV4.8+CUDA+擴展模塊支持編譯指南
    的頭像 發表于 11-30 16:45 ?1412次閱讀
    <b class='flag-5'>OpenCV4.8+CUDA</b>+擴展模塊支持編譯指南