本文目录导读:

OpenCV Java 的使用方法主要分为以下几个步骤:
环境配置
下载 OpenCV Java 库
从 OpenCV 官网 下载对应系统版本的 OpenCV(建议 4.x 版本)。
配置项目
Maven 方式(推荐)
<dependency>
<groupId>org.openpnp</groupId>
<artifactId>opencv</artifactId>
<version>4.9.0-0</version>
</dependency>
手动方式
- 将
opencv-xxx.jar添加到项目依赖 - 将对应的
.dll(Windows)或.so(Linux/Mac)文件添加到java.library.path
基本使用方法
加载库
import nu.pattern.OpenCV;
import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class OpenCVTest {
public static void main(String[] args) {
// 加载 OpenCV 库
OpenCV.loadLocally(); // 自动加载本地库
// 或者手动加载
// System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
}
常用操作示例
读取和显示图片
// 读取图片
Mat src = Imgcodecs.imread("input.jpg");
// 检查是否读取成功
if (src.empty()) {
System.out.println("无法读取图片");
return;
}
// 保存图片
Imgcodecs.imwrite("output.jpg", src);
灰度转换
Mat gray = new Mat(); Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGR2GRAY);
边缘检测
Mat edges = new Mat(); Imgproc.Canny(src, edges, 50, 150);
缩放图像
Mat resized = new Mat(); Size size = new Size(300, 300); Imgproc.resize(src, resized, size);
人脸检测
// 加载分类器
CascadeClassifier faceDetector = new CascadeClassifier();
faceDetector.load("haarcascade_frontalface_alt.xml");
// 检测人脸
MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(gray, faceDetections);
// 绘制矩形
for (Rect rect : faceDetections.toArray()) {
Imgproc.rectangle(src, new Point(rect.x, rect.y),
new Point(rect.x + rect.width, rect.y + rect.height),
new Scalar(0, 255, 0));
}
完整示例代码
import nu.pattern.OpenCV;
import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class ImageProcessor {
public static void main(String[] args) {
// 加载 OpenCV
OpenCV.loadLocally();
try {
// 读取图片
Mat image = Imgcodecs.imread("input.jpg");
if (image.empty()) {
System.out.println("图片读取失败");
return;
}
// 转换为灰度图
Mat gray = new Mat();
Imgproc.cvtColor(image, gray, Imgproc.COLOR_BGR2GRAY);
// 高斯模糊
Mat blurred = new Mat();
Imgproc.GaussianBlur(gray, blurred, new Size(5, 5), 1.5);
// Canny 边缘检测
Mat edges = new Mat();
Imgproc.Canny(blurred, edges, 50, 150);
// 保存结果
Imgcodecs.imwrite("gray.jpg", gray);
Imgcodecs.imwrite("edges.jpg", edges);
System.out.println("处理完成!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
常见问题和解决方案
库加载失败
// 方法1:使用 OpenCV 官方提供的加载方式
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 方法2:指定路径
System.setProperty("java.library.path", "/path/to/opencv/build/java/x64");
路径问题
确保分类器文件(如 haarcascade_frontalface_alt.xml)在正确路径下,通常位于 OpenCV 安装目录的 data/haarcascades/ 文件夹中。
开发建议
- 使用 Maven/Gradle 管理依赖:避免手动配置库文件
- 注意内存管理:OpenCV 的 Mat 对象需要手动释放
- 性能优化:对大批量图片处理时考虑使用多线程
- 调试技巧:使用
HighGui.imshow()显示中间结果
这就是 OpenCV Java 的基本使用方法,如果需要更复杂的操作,可以参考 OpenCV Java 官方文档。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播