Opencv安装
1、官网下载opencv包:opencv.org/releases/
以4.10.0为例,下载解压后:
cd opencv-4.10.0
mkdir build && cd build
也可以从git下载
2、安装opencv_contrib
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 4.10.0
3、进行cmake安装:
cmake \
-DCMAKE_SYSTEM_PROCESSOR=arm64 \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DWITH_OPENJPEG=OFF \
-DWITH_IPP=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv \
-D JAVA_INCLUDE_PATH=$JAVA_HOME/include \
-D JAVA_AWT_LIBRARY=$JAVA_HOME/jre/lib/amd64/libawt.so \
-D JAVA_JVM_LIBRARY=$JAVA_HOME/jre/lib/arm/server/libjvm.so \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_java=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D BUILD_ZLIB=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=/{your workspace}/opencv/opencv_contrib-4.7.0/modules \
-D BUILD_EXAMPLES=ON ..
4、make
make -j8
表示使用全部8个内核来运行make指令,可以按实际硬件情况调整,过程大概5~20分钟
5、安装
sudo make install
Idea使用opencv配置
1、进入“Project Settings”,添加jar包
这两个地方都可以,放到Global Libraries中需要额外在当前Project中添加上这个jar
2、启动程序要配置本地opencv库的地址:
-Djava.library.path=/usr/local/opencv/share/java/opencv4/
如果你这样操作没有效果,代码可以这样写:
static {
System.load("/usr/local/opencv/share/java/opencv4/libopencv_java4100.dylib");
}
3、代码测试:
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
public class TestOpenCV {
public static void main(String[] args) {
// 使用 System.load 来加载具体路径下的库文件
System.load("/usr/local/opencv/share/java/opencv4/libopencv_java4100.dylib");
System.out.println("Loaded OpenCV version " + Core.VERSION);
Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);
System.out.printf("mat = %s ", mat.dump());
}
}
如果输出了下列信息,则表示成功!
Loaded OpenCV version 4.10.0
mat = [ 1, 0, 0;
0, 1, 0;
0, 0, 1]
一个Demo
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class GrayImage {
static {
System.load("/usr/local/opencv/share/java/opencv4/libopencv_java4100.dylib");
}
public static void main(String[] args) {
// 加载图像
Mat image = Imgcodecs.imread("你输入的文件路径");
if (image.empty()) {
System.out.println("图像加载失败!");
return;
}
// 转为灰度图像
Mat gray = new Mat();
Imgproc.cvtColor(image, gray, Imgproc.COLOR_BGR2GRAY);
// 应用一些预处理(例如二值化)
Mat binary = new Mat();
Imgproc.threshold(gray, binary, 220, 255, Imgproc.THRESH_BINARY);
// 保存预处理后的图像
Imgcodecs.imwrite("你输出的文件路径", binary);
}
}
调节24行代码中的参数,会有各种不同的效果
比如你公司有水印,通过查看水印的颜色来去除,如果他是彩色的,那就需要统一化