Code for reproduce, I can promise the path of
libopencv-java455.so
is right(which is set in $LD_LIBRARY_PATH)
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.CvType;
import org.opencv.core.Scalar;
import org.opencv.videoio.VideoCapture;
class Hello {
static{
System.loadLibrary("opencv_java455"); }
public static void main(String[] args) {
VideoCapture cap = new VideoCapture("");
command(~/workspace/opencv/opencv-4.5.5/build/bin/opencv-455.jar is opencv jar path)
java -cp ~/workspace/opencv/opencv-4.5.5/build/bin/opencv-455.jar Hello.java
Error log:
Exception in thread “main” java.lang.UnsatisfiedLinkError: ‘long org.opencv.videoio.VideoCapture.VideoCapture_2(java.lang.String)’
Check the symbol table:
00000000001105e0 g F .text 00000000000002a6 Java_org_opencv_videoio_VideoCapture_VideoCapture_12
which is right.
So I am very confused. I am new to Java, please help.
So If you have Opencv installed and the libary added this might get you started?
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.CvType;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.videoio.VideoCapture;
class Hello {
public void Process(){
VideoCapture cap;
cap = new VideoCapture(0);
// Read frame
Mat frame = new Mat();
cap.read(frame);
// Clone frame and save as image.
Mat frameImg = frame.clone();
Imgcodecs.imwrite("frame.jpg", frameImg);
//Relase capture
cap.release();
public static void main(String[] args) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
System.loadLibrary("opencv_java455");
Hello example = new Hello();
example.Process();