Python 成功构建后,带有 Cuda 的 OpenCV 无法运行

Python OpenCV with Cuda not working after successful build

我在 Windows 10,使用 Python 3.9.6,我的 cv2 版本是 4.4.0。我成功地使用 Cuda 构建了 OpenCV,并且在调用 cv2.cuda.getCudaEnabledDeviceCount() 之后,它按预期 returns 1。以下几行也可以正常工作。

net = cv2.dnn.readNetFromCaffe(proto_file, weights_file)
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)
net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)

# multiple lines
# processing frame
# and setting input blob

net.setInput(in_blob)

但是,执行以下行会引发异常。

output = net.forward()

异常:

cv2.error: OpenCV(4.4.0) G:\opencv-4.4.0\opencv-4.4.0\modules\dnn\src\dnn.cpp:2353: error: (-216:No CUDA support) OpenCV was not built to work with the selected device. Please check CUDA_ARCH_PTX or CUDA_ARCH_BIN in your build configuration. in function 'cv::dnn::dnn4_v20200609::Net::Impl::initCUDABackend'

该消息说我的 Cuda 不适用于所选设备(我猜是我的 GPU)。 好像遇到了和CUDA_ARCH_BINand/orCUDA_ARCH_PTX的冲突。我的 GPU 型号是 NVIDIA Geforce MX130,它的 CUDA_ARCH_BIN 值是我发现的 6.1,我根据 CMake 设置了它。 我该如何解决这些问题?如果我需要提供更多信息,请告诉我。

“消息人士称”MX130 具有 Maxwell 内核,而不是 Pascal 内核。麦克斯韦是帕斯卡的前身

因此,您只有 CUDA 计算能力 5.0。

您应该使用适当的工具(例如 GPU-Z)来检查这一点,它会尽力查询硬件而不是按照规格。

来源: