bytedeco/javacv

Constructor for GpuMat class fails with RuntimeException due to no CUDA support detected

Open

#2331 opened on Mar 31, 2025

View on GitHub
 (4 comments) (0 reactions) (0 assignees)Java (6,985 stars) (1,583 forks)batch import
help wantedquestion

Description

I'm running Ubuntu Linux 24.10 with Java 21 installed. I have a copy of opencv 4.10 that I built from source with CUDA enabled in /opt/opencv and javacv 1.5.11 installed.

If I call new GpuMat() in my application I get the exception

Exception in thread "Worker Thread" java.lang.RuntimeException: OpenCV(4.10.0) /home/runner/work/javacpp-presets/javacpp-presets/opencv/cppbuild/linux-x86_64/opencv-4.10.0/modules/core/include/opencv2/core/private.cuda.hpp:106: error: (-216:No CUDA support) The library is compiled without CUDA support in function 'throw_no_cuda'

	at org.bytedeco.opencv/org.bytedeco.opencv.opencv_core.GpuMat.allocate(Native Method)
	at org.bytedeco.opencv/org.bytedeco.opencv.opencv_core.GpuMat.<init>(GpuMat.java:93)
	at jgauss/jgauss.worker.OpenImageRequest.processRequest(OpenImageRequest.java:35)
	at jgauss/jgauss.worker.BGThread.run(BGThread.java:53)

I enabled -Dorg.bytedeco.javacpp.logger.debug=true to see if anything failed to load, and the only remaining failure i have is for nppicom which appears to no longer exist with current CUDA if I have /opt/opencv/lib included first in LD_LIBRARY_PATH. If I remove /opt/opencv/lib from LD_LIBRARY_PATH then I also get an error telling me that opencv_cudev is not in java.library.path so LD_LIBRARY_PATH seems to be honored.

I compiled the following program to see if my opencv libraries supported CUDA, ran it, and saw the memory was allocated on the GPU by watching nvidia-smi

#include <opencv2/core/cuda.hpp>
#include <unistd.h>

int main(int argc, char *argv[]) {
    cv::cuda::GpuMat *mat = new cv::cuda::GpuMat(10000, 10000, CV_MAKETYPE(CV_32F, CV_32FC4));
    sleep(60);
}

So I'm not sure what's going wrong with the java code. I'm running this in a current Eclipse IDE, where there are no error message other than this when I run it, so I think my Eclipse run environment is set up correctly.

Suggestions?

Contributor guide