Opencv在Java中的使用,及一直报错no opencv_javaxxx in java.library.path问题解决

编程知识 行业动态 更新时间:2024-06-13 00:21:58

首先得下载OpenCV,下载链接,时间有点久但还是老实下载吧,避免少了什么东西。

https://opencv/releases/

版本要选对,下载后双击安装,记住安装路径

要用到一个jar以及对应系统位数的.dll文件
64为位就选x64里面的,32位就选x84里面的选错可能会报以下异常

接下来打开IDea创建Java项目
先导入jar包


点击ok,apply即可
如果这时候运行会报错
这是缺少.dll文件,只需要把.dll文件位置在vm一栏加上即可,必须是自己的安装位置

进来可能没有vm option这一栏,只需点击Modify options
选择添加即可

java代码示例
实现了找出照片中的圆功能

import java.util.ArrayList;
import java.util.List;

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.imgproc.Moments;

public class OpenCV {
    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public static void main(String[] args) {
        imageMoments();
    }

    public static void imageMoments() {
        Mat src=Imgcodecs.imread("D:\\图片.jpg");
        // 1 图片灰度化
        Mat gary=new Mat();
        Imgproc.cvtColor(src,gary,Imgproc.COLOR_BGR2GRAY);
        // 2 高斯降噪
        Imgproc.GaussianBlur(gary,gary,new Size(3,3),0,0);
        // 3 提取边缘
        Mat edges=new Mat();
        Imgproc.Canny(gary,edges,200,100,3,false);
        // 4 发现轮廓
        List<MatOfPoint> list = new ArrayList<MatOfPoint>();
        Mat hierarchy = new Mat();
        Imgproc.findContours(edges, list, hierarchy, Imgproc.RETR_TREE, Imgproc.CHAIN_APPROX_SIMPLE,new Point(0,0));
        // 5 图像矩
        List<Moments> moments=new ArrayList<Moments>();
        List<Point> points=new ArrayList<Point>();
        for (int i = 0,len=list.size();i < len;i++) {
            moments.add(Imgproc.moments(list.get(i)));
            points.add(new Point(moments.get(i).get_m10()/moments.get(i).get_m00(),moments.get(i).get_m01()/moments.get(i).get_m00()));
        }
        // 6 绘制轮廓
        Mat drawimage = new Mat(src.size(),CvType.CV_8UC3);
        src.copyTo(drawimage);
        for (int i = 0, len = list.size(); i < len; i++) {
            Imgproc.drawContours(drawimage,list,i,new Scalar(0,0,255),2,Imgproc.LINE_AA);//1 园
            Imgproc.circle(drawimage,points.get(i),0,new Scalar(0,255,0),2,Imgproc.LINE_AA);// 圆心
        }
        Imgproc.resize(drawimage, drawimage, new Size(drawimage.cols()/2,drawimage.rows()/2));
        // 7 显示结果
        HighGui.imshow("图像矩(Image Moments)",drawimage);
        HighGui.waitKey(0);
    }

}

更多推荐

Opencv在Java中的使用,及一直报错no opencv_javaxxx in java.library.path问题解决

本文发布于:2023-04-01 10:57:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/dcc833d06b95617ece8a5eb04881fe96.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:报错   Java   Opencv   opencv_javaxxx   path

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!