Oct 10, 2018 原创文章

  OpenCV GPU 模块学习 (1)读取GPU设备信息

使用OpenCV GPU模块读取 GPU设备信息

分享到: 0

请保证您的浏览器支持MathJax插件,以免数学公式无法显示


软件信息
OpenCV Version : 2.4.13.6
CUDA Version : 8.0

在OpenCV GPU 模块中,提供了一些列函数,来读取GPU信息。函数列表如下所列:

https://docs.opencv.org/2.4.13.6/modules/gpu/doc/initalization_and_information.html

通过一个例程来测试这些函数的使用方法。


#include "opencv2/opencv.hpp"
#include "opencv2/gpu/gpu.hpp"

int main()
{
    // 获取设备的数量
    int num_devices = cv::gpu::getCudaEnabledDeviceCount();

    // 检测设备的数量,保证设备数量不小于0
    if (num_devices <= 0)
    {
        std::cerr << "There is no device." << std::endl;
        return -1;
    }
    int enable_device_id = -1;

    // 计算可用设备的数量
    for (int i = 0; i < num_devices; i++)
    {
        cv::gpu::DeviceInfo dev_info(i);
        if (dev_info.isCompatible())
        {
            enable_device_id = i;
        }
    }
    // 检测可用设备的数量,保证至少有一个可用设备
    if (enable_device_id < 0)
    {
        std::cerr << "GPU module isn't built for GPU" << std::endl;
        return -1;
    }
    cv::gpu::setDevice(enable_device_id);

    std::cout << "GPU is ready, device ID is " << num_devices << "\n";

    cv::Mat src_image = cv::imread("/home/video201/imszp/opencv_example/demo/lena.jpg", 1);
    cv::Mat dst_image;

    // 将主机 host 上的数据传输到设备 device 上
    cv::gpu::GpuMat d_src_img(src_image);
    cv::gpu::GpuMat d_dst_img;

    // 在GPU上完成数据的计算
    cv::gpu::cvtColor(d_src_img, d_dst_img, CV_BGR2GRAY);

    // 将计算完成的数据从设备下载到主机上 
    d_dst_img.download(dst_image);

    // 将计算结果显示出来
    cv::namedWindow("test", 0);
    cv::imshow("test", dst_image);
    cv::waitKey(0);
    return 0;
}


打赏


感谢您的支持,我会继续努力的!

扫码支持

长按识别二维码或打开支付宝扫一扫 完成打赏
或 使用<支付宝链接>打赏


关闭

分享到: 0