Oct 10, 2018 原创文章
OpenCV GPU 模块学习 (1)读取GPU设备信息
软件信息:
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;
}