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)来检查这一点,它会尽力查询硬件而不是按照规格。
来源:
- https://en.wikipedia.org/wiki/GeForce_10_series#GeForce_10_(10xx)_series_for_notebooks(注意 Fab (nm) 有何不同,代号是 GM108,不是 GPxxx)
- https://www.techpowerup.com/gpu-specs/geforce-mx130.c3043
我在 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)来检查这一点,它会尽力查询硬件而不是按照规格。
来源:
- https://en.wikipedia.org/wiki/GeForce_10_series#GeForce_10_(10xx)_series_for_notebooks(注意 Fab (nm) 有何不同,代号是 GM108,不是 GPxxx)
- https://www.techpowerup.com/gpu-specs/geforce-mx130.c3043