如何检查OpenCV是否使用TBB,CUDA或Qt支持进行编译?

时间:2013-06-27 15:31:00

标签: windows opencv

如何判断OpenCV库是否在Windows 7计算机上使用TBB或CUDA或QT编译?我应该使用依赖性walker,如果是,那怎么办?还是有另一种方法可以找到答案吗?

5 个答案:

答案 0 :(得分:1)

跟随dpetrini的回答,您可以在其中添加任何想要进行正则表达式搜索的支持,以漂亮地显示输出,而不是在build-info输出中进行搜索。

import cv2
import re

cv_info = [re.sub('\s+', ' ', ci.strip()) for ci in cv2.getBuildInformation().strip().split('\n') 
               if len(ci) > 0 and re.search(r'(nvidia*:?)|(cuda*:)|(cudnn*:)', ci.lower()) is not None]
print(cv_info)
['NVIDIA CUDA: YES (ver 10.0, CUFFT CUBLAS FAST_MATH)', 'NVIDIA GPU arch: 75', 'NVIDIA PTX archs:', 'cuDNN: YES (ver 7.6.5)']

答案 1 :(得分:0)

对于CUDA支持,您可以检查gpu模块大小。如果在没有CUDA支持的情况下编译OpenCV,opencv_gpu.dll将具有小尺寸(<1 MB),它将是一个虚拟包。对于一种计算能力,使用CUDA支持构建的gpu模块的实际大小约为70 MB。

答案 2 :(得分:0)

如果使用CUDA功能编译OpenCV,则它将为getCudaEnabledDeviceCount函数返回非零值(确保已安装CUDA)。另一种非常简单的方法是尝试在OpenCV中使用GPU功能并使用try-catch。如果抛出异常,则表示尚未使用CUDA编译它。

答案 3 :(得分:0)

bool _cudaSupported  = false;

...
// Obtain information from the OpenCV compilation
// Here is a lot of information.
const cv::String str = cv::getBuildInformation();

// Parse looking for "Use Cuda" or the option you are looking for.
std::istringstream strStream(str);

std::string line;
while (std::getline(strStream, line))
{
    // Enable this to see all the options. (Remember to remove the break)
    //std::cout << line << std::endl;

    if(line.find("Use Cuda") != std::string::npos)
    {
        // Trim from elft.
        line.erase(line.begin(), std::find_if(line.begin(), line.end(),
        std::not1(std::ptr_fun<int, int>(std::isspace))));

        // Trim from right.
        line.erase(line.begin(), std::find_if(line.begin(), line.end(),
        std::not1(std::ptr_fun<int, int>(std::isspace))));

        // Convert to lowercase may not be necessary.
        std::transform(line.begin(), line.end(), line.begin(), ::tolower);
        if (line.find("yes") != std::string::npos)
        {
            std::cout << "USE CUDA = YES" << std::endl;
            _cudaSupported = true;
            break;
        }
    }
}

答案 4 :(得分:0)

您可以通过在cmdline中打开python3 REPL来了解它:

python3

然后导入opencv:

import cv2

然后打印构建信息:

print(cv2.getBuildInformation())

并查找CUDA和相关的GPU信息。