【Opencv源码安装】Linux源码安装opencv

本文主要说明Linux上如何从源码安装opencv库,并给出一个简单例子说明安装成功

1.环境说明

VMware下的Ubuntu22.04LTS

2.安装步骤

需要准备好java环境和opencv源码后,从源码cmake编译,并进行安装

2.1.依赖安装

sudo apt install openjdk-8-jdk openjdk-8-jre
# 验证安装
java -version  # 应显示 "1.8.x"
javac -version  # 应显示 "1.8.x"

sudo apt install build-essential cmake git libgtk2.0-dev pkg-config \
libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev \
libjpeg-dev libpng-dev libtiff-dev ant

2.1.1.源码下载

wget -O opencv-4.6.0.tar.gz https://github.com/opencv/opencv/archive/refs/tags/4.6.0.tar.gz
wget -O opencv_contrib-4.6.0.tar.gz https://github.com/opencv/opencv_contrib/archive/refs/tags/4.6.0.tar.gz

# 解压
tar -zxf opencv-4.6.0.tar.gz 
tar -zxf opencv_contrib-4.6.0.tar.gz 

2.1.2.源码编译及安装

cd opencv-4.6.0
mkdir build
cd build
# 重要的是下面的cmake选项
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/mylib -D OPENCV_GENERATE_PKGCONFIG=YES -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.6.0/modules -D ENABLE_CXX11=ON -D WITH_1394=OFF -D BUILD_opencv_xfeatures2d=OFF -D BUILD_SHARED_LIBS=OFF -D BUILD_TESTS=OFF ..

# 安装
make -j$(nproc)
make install

具体Cmake选项参考Linux环境下编译并使用java_opencv_java opencv在linux下运行-CSDN博客

安装完成后有两个重要的文件,一个.so文件,一个.jar文件

# ls /usr/local/mylib/share/java/opencv4/
libopencv_java460.so  opencv-460.jar

2.1.3.加入环境

~/.bashrc文件末尾加入

# 运行时需要的文件路径
export LD_LIBRARY_PATH=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/mylib/share/java/opencv4:$LD_LIBRARY_PATH
# 编译时需要
export CLASSPATH=.:/usr/local/mylib/share/java/opencv4/*:$CLASSPATH

2.2.简单测试

文件目录

.
├── ImageProcessor.java
└── input_image.jpg

ImageProcess.java文件运行

javac ImageProcessor.java
java ImageProcessor

2.2.1.运行结果

多出三个文件ImageProcessor.class,output_resized_height.jpgoutput_resized_width.jpg
输出图像
输出图像

2.2.2.文件内容


import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class ImageProcessor {

    static {
        System.out.println("Loading OpenCV" + Core.VERSION);
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }

    public static Mat loadImage(String filename) {
        return Imgcodecs.imread(filename);
    }

    public static void saveImage(Mat image, String filename) {
        Imgcodecs.imwrite(filename, image);
    }

    public static void resizeWidth(Mat image) {
        int newWidth = image.cols() / 2;
        Imgproc.resize(image, image, new Size(newWidth, image.rows()));
    }

    public static void resizeHeight(Mat image) {
        int newHeight = image.rows() / 2;
        Imgproc.resize(image, image, new Size(image.cols(), newHeight));
    }
    
    public static void main(String[] args) {
        // Test the methods
        ImageProcessor processor = new ImageProcessor();
        Mat image = processor.loadImage("input_image.jpg");

        if (image != null) {
            System.out.println("Image loaded successfully. Resizing width...");
            processor.resizeWidth(image);
            processor.saveImage(image, "output_resized_width.jpg");
            System.out.println("Resized width image saved successfully.");

            image = processor.loadImage("input_image.jpg");
            System.out.println("Resizing height...");
            processor.resizeHeight(image);
            processor.saveImage(image, "output_resized_height.jpg");
            System.out.println("Resized height image saved successfully.");
        } else {
            System.err.println("Error: Could not load image.");
        }
    }
}

3.参考

Linux环境下编译并使用java_opencv_java opencv在linux下运行-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值