OpenCV编译C++测试程序获取cuda设备信息

视频讲解

OpenCV编译C++测试程序获取CUDA设备信息

测试代码

test-cv.cpp

#include <opencv2/opencv.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <iostream>

using namespace cv;
using namespace cv::cuda;
using namespace std;

int main(int argc, char **argv) {
    cuda::printCudaDeviceInfo(cuda::getDevice());
    int cnt = getCudaEnabledDeviceCount();
    printf("Now get CUDA device count:%d \r\n", cnt);
    return 0;
}

手动编译的opencv的安装目录在/usr/lib下,可以看之前的cmake参数

-DCMAKE_INSTALL_PREFIX=/usr/local \

故使用g++编译的时候,需要加上-l指定头文件目录,否则就会报找不到opencv头文件

fatal error: opencv2/opencv.hpp: No such file or directory

再增加-L指定依赖动态库的位置,-lopencv_core为基础库
还有如下库可能会使用到
-lopencv_aruco -lopencv_barcode -lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_dnn_objdetect -lopencv_dnn -lopencv_dnn_superres -lopencv_dpm -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_freetype -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_highgui -lopencv_imgcodecs -lopencv_img_hash -lopencv_imgproc -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_mcc -lopencv_ml -lopencv_objdetect -lopencv_optflow -lopencv_phase_unwrapping -lopencv_photo -lopencv_plot -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_videoio -lopencv_video -lopencv_videostab -lopencv_wechat_qrcode -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetect -lopencv_xphoto

g++ test-cv.cpp -o test-cv -I/usr/local/include/opencv4 -L/usr/local/lib -lopencv_core

运行得到如下结果

./test-cv 
*** CUDA Device Query (Runtime API) version (CUDART static linking) *** 

Device count: 1

Device 0: "Orin"
  CUDA Driver Version / Runtime Version          11.40 / 11.40
  CUDA Capability Major/Minor version number:    8.7
  Total amount of global memory:                 7471 MBytes (7834177536 bytes)
  GPU Clock Speed:                               0.62 GHz
  Max Texture Dimension Size (x,y,z)             1D=(131072), 2D=(131072,65536), 3D=(16384,16384,16384)
  Max Layered Texture Size (dim) x layers        1D=(32768) x 2048, 2D=(32768,32768) x 2048
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per block:           1024
  Maximum sizes of each dimension of a block:    1024 x 1024 x 64
  Maximum sizes of each dimension of a grid:     2147483647 x 65535 x 65535
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and execution:                 Yes with 2 copy engine(s)
  Run time limit on kernels:                     No
  Integrated GPU sharing Host Memory:            Yes
  Support host page-locked memory mapping:       Yes
  Concurrent kernel execution:                   Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support enabled:                No
  Device is using TCC driver mode:               No
  Device supports Unified Addressing (UVA):      Yes
  Device PCI Bus ID / PCI location ID:           0 / 0
  Compute Mode:
      Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) 

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version  = 11.40, CUDA Runtime Version = 11.40, NumDevs = 1

Now get CUDA device count:1 
  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SIFT (Scale-Invariant Feature Transform) 是一种用于图像特征提取的算法,它能够在不受图像缩放、旋转和平移的影响下,检测和描述图像中的关键点。CUDA 是一种并行计算平台和编程模型,能够加速各种计算密集型任务。SIFT CUDA C 代码实现是将 SIFT 算法的计算部分使用 CUDA C 编程语言在 GPU 上进行加速计算的实现。 SIFT CUDA C 代码的实现一般包括以下步骤: 1. 图像金字塔构建:使用不同尺度的高斯滤波器对输入图像进行卷积,从而得到一系列尺度空间图像。这一步可以使用 CUDA C 代码并行计算。 2. 关键点检测:在每个尺度空间图像中,通过计算图像的梯度和高斯差分来检测尺度空间极值点。这一步可以使用 CUDA C 代码并行计算。 3. 关键点精化:对检测到的关键点进行亚像素级别的精化,以提高关键点的准确性。这一步可以使用 CUDA C 代码并行计算。 4. 方向分配:对每个关键点计算其主方向,并对其周围的特征点进行方向分配。这一步可以使用 CUDA C 代码并行计算。 5. 特征描述:对每个关键点周围的区域计算特征描述子。这一步可以使用 CUDA C 代码并行计算。 以上只是 SIFT 算法的基本实现步骤,实际的代码实现还需要考虑如何将数据从主机内存传输到 GPU 设备内存,并且需要适当优化内存访问和计算方式,以充分利用 GPU 并行计算的能力。 总体而言,SIFT CUDA C 代码实现是将 SIFT 算法的计算部分使用 CUDA C 编程语言在 GPU 上加速计算,以提高 SIFT 算法在大规模图像数据上的处理能力。这种实现方式可以充分利用 GPU 的并行计算能力,加快特征提取和识别的速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值