I’m trying to get mobilenet detectors working on multiple cameras on my local network, with inference running on two GPUs. I searched around a bit and found out you can select a specific GPU using cv2.cuda.SetDevice(gpuid), but that didn’t work for me in OpenCV 4.5. Is this command deprecated/obsolete?
welcome.
please explain “didn’t work”.
It gave me an error saying the command didn’t exist, that SetDevice wasn’t a method for the cv2.cuda class.
Have you compiled OpenCV with CUDA?
I just tried
cv2.cuda.setDevice(0)
with no errors and when I tried device 1 which doesn’t exist I get the below error informing me of that
OpenCV(4.5.0) Error: Gpu API call (invalid device ordinal) in cv::cuda::setDevice, file modules\core\src\cuda_info.cpp, line 73
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
cv2.error: OpenCV(4.5.0) \modules\core\src\cuda_info.cpp:73: error: (-217:Gpu API call) invalid device ordinal in function 'cv::cuda::setDevice'
I just reran the program with cv2.cuda.setDevice(1)
instead of cv2.cuda.SetDevice(1)
, and it ran. I think the guide that I read had the capitalization wrong. Sorry for the dumb mistake. My best guess as to why device 1 didn’t work for you but worked for me is because you might not have a second GPU.
Also, I’m new, how do you insert blocks of code like you did?
three backticks for a block:
```
generic code here
```
```python
python code here. try other languages too
```
single backticks for inline
code
single backticks for `inline` code
or indent by 4 spaces for monospaced text without highlighting. toolbar above text entry box has a button for that.
Thanks!
cv2.cuda.setDevice(1)