Java结合OpenCV读取图片并遍历像素值(解决执行jar,动态库不能被加载)

67 篇文章 1 订阅
14 篇文章 0 订阅

1.导入opencv依赖

  <!--配合opencv处理图像依赖-->
        <dependency>
            <groupId>org</groupId>
            <artifactId>opencv</artifactId>
            <scope>system</scope>
            <version>4.0.0</version>
            <systemPath>${project.basedir}/src/main/resources/lib/opencv-245.jar</systemPath>
        </dependency>

2.导入依赖包到对应目录下

在这里插入图片描述

3.yml文件路径配置(将动态库依赖包放到对应的路径下)

在这里插入图片描述

4.获取代码

  1. 获取对应yml动态库配置
    在这里插入图片描述
  2. 干货代码
 Map map = new HashMap();
 //判断系统
 String osName = System.getProperties().getProperty("os.name");
            String url = null;
            if (osName.equals("Linux")) {
                url = jdo;
            } else {
                // 加载动态库
                url = jwd;
            }
            System.load(url);
            // 列表
            ArrayList array = new ArrayList();
            // pathPy:图片文件路径    图像读取(-1代表原图)   
            Mat image = imread(pathPy, -1);
            // 图像行:高度height
            int img_rows = image.rows();
            // 图像列:宽度width
            int img_colums = image.cols();
            // 图像通道:维度dims/channels
            int img_channels = image.channels();
            // 图像像素遍历,按通道输出
            for (int i = 0; i < img_channels; i++) {
                for (int j = 0; j < img_rows; j++) {
                    for (int k = 0; k < img_colums; k++) {
                        array.add(image.get(j, k)[i]);
                    }
                }
            }
            //获取图像的位深度值 color.getPixelSize()--获取图像是多少位?
            File picture = new File(pathPy);
            BufferedImage sourceImg = ImageIO.read(new FileInputStream(picture));
            ColorModel color = sourceImg.getColorModel();
           

            map.put("deep", color.getPixelSize());
            map.put("width", img_colums);
            map.put("height", img_rows);
            map.put("data", array);
            //map为最后获取返回数据    RestResultUtil.genSuccessResult(map):我写的同意返回格式
            return RestResultUtil.genSuccessResult(map);

5.依赖包以及动态库获取路径

链接:https://pan.baidu.com/s/1cZga5nFDIr5r5CWMYl-7yA 
提取码:1234 
复制这段内容后打开百度网盘手机App,操作更方便哦

6.听说javacv不用加载动态库也可获取像素值,但是我搞了好几天没有处理好,最终才选择此办法,如果有更好的办法或者不用加载动态库的办法,希望各位大神留言,学习学习。谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值