前言
安装OpenCV
Windows环境
https://github.com/opencv/opencv/releases
下载这个
下面的exe也可以 这个exe是一个自解压文件
安装的时候选择目录的时候不用新建opencv
,在解压的时候会自动创建opencv
文件夹。
CentOS源码编译
下载到服务器上
安装依赖
1 | yum groupinstall -y "Development Tools" |
查看gcc版本
1 | gcc -v |
安装:
1 | unzip opencv-4.6.0.zip |
然后输入下述命令进行编译:
1 | make -j8 |
使用make -j4
或者make -j8
进行多线程编译,虽然速度快但是容易出问题。
使用make
如果中间如果因为特殊原因断了,可以使用make
命令再继续。
编译100%完成后最后输入下述命令进行安装:
1 | make install |
输入以下命令:
1 | cd /etc/ld.so.conf.d/ |
然后,复制.pc文件:
1 | sudo cp -f /usr/local/opencv4/lib64/pkgconfig/opencv4.pc /usr/lib64/pkgconfig/opencv4.pc |
注意,我安装的是4.6.0,生成的是opencv4.pc
,不是opencv.pc
测试一下:
1 | pkg-config --modversion opencv4 |
升级cmake
注意
本文中使用的cmake3就不用再升级cmake了。
cmake需要3.5.1以上的版本
1 | sudo yum install build-essential libssl-dev |
通过yum命令移除原先的CMake。
1 | yum remove cmake -y |
建立目标版本CMake的软连接。
1 | ln -s /usr/local/bin/cmake /usr/bin |
查看版本
1 | cmake --version |
升级libstdc
升级cmake的时候又报错
version `GLIBCXX_3.4.20‘ not found 解决方法
解决方法
1 | su root |
可以看到
libstdc++.so.6 ->libstdc++.so.6.0.19
1 | # 删除/usr/lib64原来的软连接libstdc++.so.6,删除之前先备份一份 |
CentOS中YUM安装
1 | yum install opencv opencv-devel opencv-python -y |
卸载
1 | yum remove opencv opencv-devel opencv-python -y |
Ubuntu中APT安装
1 | sudo apt update |
获取版本
1 | python3 -c "import cv2; print(cv2.__version__)" |
卸载
1 | sudo apt remove -y libopencv-dev python3-opencv |
Ubuntu源码编译
https://github.com/opencv/opencv/releases
添加环境依赖
1 | sudo apt install -y build-essential cmake git pkg-config libgtk-3-dev \ |
cmake需要3.5.1以上的版本
查看cmake版本
1 | cmake --version |
安装:
1 | unzip opencv-4.6.0.zip |
然后输入下述命令进行编译:
1 | make -j12 |
使用make -j4
或者make -j8
进行多线程编译,虽然速度快但是容易出问题。
使用make
如果中间如果因为特殊原因断了,可以使用make
命令再继续。
编译100%完成后最后输入下述命令进行安装:
1 | make install |
输入以下命令:
1 | cd /etc/ld.so.conf.d/ |
然后,复制.pc文件:
1 | sudo cp -f /usr/local/opencv4/lib/pkgconfig/opencv4.pc /usr/lib/pkgconfig/opencv4.pc |
注意,我安装的是4.6.0,生成的是opencv4.pc
,不是opencv.pc
测试一下:
1 | pkg-config --modversion opencv4 |
加载依赖
项目中添加jar
jar的位置在安装目录下build\java
的目录下。
下面两种方式任选其一即可。
推荐方式1,方式2在Linux上就失效了。
方式1
添加测试代码
1 | import org.opencv.core.Core; |
配置运行时参数。
通过菜单Run->Edit Configurations...
打开Run/Debug Configurations
对话框。
在对话框窗口右侧,找到VM options
标签对应的文本框。
在文本框中填写参数
-Djava.library.path=D:\Tools\opencv\build\java\x64
看好自己电脑是64为就选x64,32位就选x86。
当然也可以直接把opencv_java455.dll
放在Java的bin目录下,这样也就不用配置java.library.path
。
D:\Tools\Java\jdk1.8.0_102\bin
方式2
这种方式就不用再指定java.library.path
了。
把jar和dll放到项目中。
代码中
1 | import org.opencv.core.Core; |
常用方法
1 | import org.opencv.core.*; |
如上就分别展示了
- 图片转灰度
- 灰度图片二值化
- 二值化图片黑色区域膨胀
- 图片的裁剪
灰度
1 | // 以灰度方式,读取图片 |
二值化
1 | // 转成二值化图片 |
膨胀
1 | // 膨胀 |
高斯模糊
1 | Mat img01 = new Mat(); |
剪裁
1 | // 截取左上角四分之一区域 |
工具类
通用
1 | package utils.opencv; |
透视变换
1 | package utils.opencv; |
轮廓相关
1 | package utils.opencv; |
处理全流程
1 | import org.opencv.core.*; |
绘图
画线
1 | String basePath = "D:\\Project\\Java\\opencv-demo01\\pic\\"; |
说明
参数 | 解释 |
---|---|
InputOutPutArray img | 在 img 图像上绘制 |
Point pt1 | 端点1 |
Point pt2 | 端点2 |
Scalar& color | 颜色 |
int thickness | 线条厚度 |
lineType | 线条边缘类型(LINE_4(边缘像素采用4连通,即上下左右),LINE_8(边缘像素采用8连通,即上下左右还有四个对角),LINE_AA(边缘像素采用高斯滤波,抗锯齿)) |
画椭圆
1 | String basePath = "D:\\Project\\Java\\opencv-demo01\\pic\\"; |
矩形
1 | String basePath = "D:\\Project\\Java\\opencv-demo01\\pic\\"; |
圆圈
1 | String basePath = "D:\\Project\\Java\\opencv-demo01\\pic\\"; |
文本
1 | String basePath = "D:\\Project\\Java\\opencv-demo01\\pic\\"; |
要将文本放入图像中,需要指定以下内容。
- 您要写入的文字数据
- 您要放置它的位置坐标(即
文字的左下角
)。 - 字体类型
- 字体比例(指定字体大小)
- 线条类型 为了获得更好的外观,建议使用LINE_AA