(Window、mac)配置opencv + idea
最近在做一个项目时要用到opencv来做图像处理,所以需要配置开发环境,崩溃开始~~~刚开始在mac配置最终放弃,改到windows配置后在一通折腾后终于成功,下边一步一步教大家怎么配置。
一、配置基础环境
- 安装jdk,我这里安装的是jdk18
- 安装idea,我用的是2022.2.1
- 安装maven
以上都是基础环境配置我就不赘述了,大家自行安装即可。
二、windows 安装opencv
1、访问opencv官网
https://opencv.org/releases/page/2/
2、找到 OpenCV – 4.3.0 (注意:一定要注意安装版本,代码和下载的一定要同一个版本)
3、点击 windows 下载 opencv-4.5.1-vc14_vc15.exe ,由于是国外网站最好FQ后再下载会快一下
https://altushost-swe.dl.sourceforge.net/project/opencvlibrary/4.5.1/opencv-4.5.1-vc14_vc15.exe
4、下载完成后,双击安装,就是7zip做的一个exe,记住安装位置,后边需要。
5、这里就是解压后的 opencv 库,分别是 jar 包 和 dll 文件。
三、windows 创建java项目
1、java项目
1、点击 file -> New -> Project
2、输入项目名称,选择 IntelliJ 后单击 Create
3、创建项目后选择 File -> Project Structure
4、单击 Libraries -> + -> Java
5、选择刚才安装的opencv jar包,这就是刚才让大家记住的目录,如果忘记了再装一次 opencv 就找到了。
6、此时 opencv 的 jar 库就配置好了。这里就是我之前犯错误的地方,之前这时候我就去写代码了运行后一直报错,jndi找不到库,如何解决呢?见7步
7、点击 + 选择opencv dll库
8、选择 opencv 的 dll 后点击 ok
9、此时 opencv 就配置好了,一个是 open cv 的 jar 包,一个是 open cv 的 dll 库
10、点击 ok ,关闭 Project Structure ,开始写代码
11、src 点击右键 new - java class 创建一个新类,名字随便起
12、代码如下
import org.opencv.core.Core; import org.opencv.core.Mat; import static org.opencv.core.Core.NATIVE_LIBRARY_NAME; import static org.opencv.highgui.HighGui.*; import static org.opencv.imgcodecs.Imgcodecs.imread; import static org.opencv.imgcodecs.Imgcodecs.imwrite; public class opencv1 { public static void main(String[] args) { System.out.println("Welcome to OpenCV " + Core.VERSION); System.loadLibrary(NATIVE_LIBRARY_NAME); //读取图片 Mat imread = imread("C:\\Users\\jubo\\Pictures\\baijiayun.PNG"); //显示窗口 imshow("demo",imread); //按任意键退出程序 waitKey(0); //关闭所有窗口 destroyAllWindows(); //保存图片 imwrite("./out/test1.png",imread); } }
注意一定要加 System.loadLibrary(NATIVE_LIBRARY_NAME); 否则依然会报错
13、运行代码后可以看到图片已经加载,并且在 out 目录中也有保存的文件。到此 opencv 集成完成
2、maven项目
这次换成了 4.5.1 版本的 opencv 库
1、创建一个 maven 项目
2、在 pom.xml 中加入 opencv 依赖
<dependencies> <dependency> <groupId>org.bytedeco</groupId> <artifactId>opencv</artifactId> <version>4.5.1-1.5.5</version> </dependency> </dependencies>
3、pom.xml 上单击右键,选择 Reload Project 导入库
4、导入完成后,还是选择 dll 库
5、写完代码后运行,跟java项目一样运行效果
二、mac安装opencv
1、默认安装(java的请绕道)
如无意外,按照如下步骤就可以成功安装 opencv了。
# 升级 brew brew update # 安装 cmake brew install cmake # 安装 ant brew install ant # 安装 opencv brew install opencv
2、编译安装(通过编译生成 Java 适用的 dylib)
1、如果按照默认安装过 opencv,需要先卸载后才能重新编译安装 opencv。执行如下命令卸载 opencv
# 删除已安装的 opencv
brew uninstall opencv
2、安装基础库,按照如下命令安装即可
# 升级 brew brew update # 安装 cmake brew install cmake # 安装 ant brew install ant
3、设置 环境变量
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_331.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH #################opencv dylib############## export JAVA_AWT_INCLUDE_PATH=$JAVA_HOME export JAVA_AWT_LIBRARY=$JAVA_HOME export JAVA_INCLUDE_PATH=$JAVA_HOME/indclude export JAVA_INCLUDE_PATH2=$JAVA_HOME/include/darwin export JAVA_JVM_LIBRARY=$JAVA_HOME ###############################
4、打开 opencv java 编译选项
brew edit opencv
找到-DBUILD_opencv_java=OFF 修改为-DBUILD_opencv_java=ON 如下图。查找和保存退出就是 vi 命令。
5、执行以下命令编译 opencv ,时间有点长耐心等待下。
brew install --build-from-source opencv
编译成功如下图
成功后在 /opt/homebrew/Cellar/opencv/4.6.0/share/java/opencv4 这里会生成 libopencv_java460.dylib 和 opencv-460.jar
此时就可以开始在 idea 里玩 opencv了,idea 中的用法跟 windows 平台上一样。
3、老版本源码编译安装
https://opencv.org/releases/page/2/
2、下载后解压缩到一个目录中,我放到了 opencv/opencv-4.3.0 目录中
3、进入目录后同样需要安装基础库
# 升级 brew brew update # 安装 cmake brew install cmake # 安装 ant brew install ant
4、安装其他依赖库
brew install gcc git cmake pkg-config ffmpeg libgphoto2 libav libjpeg libpng libtiff libdc1394 ant
有文档说还要安装 ffmpet 4,也不管了先装上再说
brew install ffmpeg@4
5、同样需要设置环境变量,设置的时候 JAVA_HOME 需要根据你的配置修改
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_331.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH #################opencv dylib############## export JAVA_AWT_INCLUDE_PATH=$JAVA_HOME export JAVA_AWT_LIBRARY=$JAVA_HOME export JAVA_INCLUDE_PATH=$JAVA_HOME/indclude export JAVA_INCLUDE_PATH2=$JAVA_HOME/include/darwin export JAVA_JVM_LIBRARY=$JAVA_HOME ###############################
6、cmake编译
# 在 opencv-4.3.0 目录中创建 build 目录 mkdir build # 进入 build 目录 cd build # cmake 编译,注意{你的路径}这里要写你的目录名 cmake -DBUILD_SHARED_LIBS=OFF -DWITH_IPP=OFF -DCMAKE_INSTALL_PREFIX={你的路径}/opencv-4.3.0 ../
cmake编译成功后如下图,注意看是否有 java 如果没有需要配置 -DBUILD_opencv_java=ON 见上
7、make编译,启动8线程编译
make -j 8
编译后显示如下错误。
使用命令查询后也能看到只生成了jar没有dylib
find . -name '*.dylib' find . -name '*.jar'
4、“混”方法解决了 maven 项目使用 opencv 4.3.0
<dependencies> <dependency> <groupId>org.bytedeco</groupId> <artifactId>opencv</artifactId> <version>4.3.0-1.5.3</version> </dependency> </dependencies>
加好后如下图
3、创建class并写好代码,代码如下
import org.opencv.core.Core; import org.opencv.core.Mat; import static org.opencv.core.Core.NATIVE_LIBRARY_NAME; import static org.opencv.highgui.HighGui.*; import static org.opencv.imgcodecs.Imgcodecs.imread; import static org.opencv.imgcodecs.Imgcodecs.imwrite; public class aa { public static void main(String[] args) { System.out.println("Welcome to OpenCV " + Core.VERSION); System.loadLibrary(NATIVE_LIBRARY_NAME); //读取图片 Mat imread = imread("/Users/lairongsheng/Downloads/1.png"); //显示窗口 imshow("demo", imread); //按任意键退出程序 waitKey(0); //关闭所有窗口 destroyAllWindows(); //保存图片 imwrite("./out/test1.png", imread); } }
4、找到之前编译好的 460 的 dylib 复制一个然后改成 430,复制后如下图红框
5、在 Project Structure 中配置 Native Library,按上图选路径
6、运行后看到已经成功了,不过这个方法有点“混”不知道有啥后遗症......