java dll 打包到jar_Idea打包dll到jar包

该博客主要展示了如何将OpenCV的dll库打包到Java项目的jar中,并通过Java代码加载dll进行使用。文中通过`System.load()`方法加载dll,并从RTSP流中捕获视频帧,进行灰度处理并保存图片。
摘要由CSDN通过智能技术生成

代码

import org.opencv.core.Mat;

import org.opencv.imgcodecs.Imgcodecs;

import org.opencv.imgproc.Imgproc;

import org.opencv.videoio.VideoCapture;

import org.opencv.videoio.Videoio;

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.text.SimpleDateFormat;

import java.util.Arrays;

import java.util.Date;

public class Main {

private static String rtsp_62 = "rtsp://admin:密码@192.168.0.62:554/stream0";

private static String rtsp_64 = "rtsp://admin:密码@192.168.0.64:554/stream0";

private static String rtsp_93 = "rtsp://admin:密码@192.168.0.93:554/stream0";

private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");

private static String dir = "D:/VideoRec/Image";

private static String nginxServer = "http://192.168.0.56:8999";

static {

try {

// getClass().getClassLoader().getResourceAsStream(arg0);

// System.out.println("MainTest.class.getClass()"+MainTest.class.getClass().toString());

InputStream in = Main.class.getResourceAsStream("opencv_java440.dll"); //dll文件位置

System.out.println("Main.class.getClass()" + in);

File ffile = new File("");

String filePath = null;

filePath = ffile.getAbsolutePath() + File.separator + "opencv_java440.dll";

System.out.println("filePath opencv_java410.dll is " + filePath);

File dll = new File(filePath);

FileOutputStream out = new FileOutputStream(dll); //缓存dll位置

int i;

byte[] buf = new byte[1024];

try {

while ((i = in.read(buf)) != -1) {

out.write(buf, 0, i);

}

} finally {

in.close();

out.close();

}

System.load(dll.getAbsolutePath());//

dll.deleteOnExit();

} catch (Exception e) {

System.err.println("load jni error!");

}

}

public static void main(String[] args) {

// System.load(ClassLoader.getSystemResource("opencv_java440.dll").getPath());

System.out.println("load opencv_java440.dll success");

}

private static void openVideo64() {

VideoCapture capture = null;

try {

// System.load(ClassLoader.getSystemResource("static/opencv_java440.dll").getPath());

capture = new VideoCapture();

capture.open(rtsp_64);

int height = (int) capture.get(Videoio.CAP_PROP_FRAME_HEIGHT);

int width = (int) capture.get(Videoio.CAP_PROP_FRAME_WIDTH);

if (height == 0 || width == 0) {

throw new Exception("camera not found!");

}

Mat capImg = new Mat();

Mat temp = new Mat();

while (true) {

capture.read(capImg);

Imgproc.cvtColor(capImg, temp, Imgproc.COLOR_RGB2GRAY);

String path = dir + "/" + sdf.format(new Date()) + ".jpg";

Imgcodecs.imwrite(path, temp);

// sendToWeb("2", path);

// Thread.sleep(300);

}

} catch (Exception e) {

System.out.println("异常:" + e.toString() + " --- " + Arrays.toString(e.getStackTrace()));

} finally {

if (capture != null && capture.isOpened()) {

System.out.println("-----capture--done--");

capture.release();

}

}

}

}

``

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值