用java写一个opencv识别汽车的代码
时间: 2024-03-02 08:49:47 浏览: 129
以下是使用 Java 和 OpenCV 进行汽车识别的代码示例:
```java
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.objdetect.CascadeClassifier;
public class CarDetection {
public static void main(String[] args) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME); // 加载 OpenCV 库
CascadeClassifier carDetector = new CascadeClassifier("cars.xml"); // 加载汽车分类器
String filename = "car.jpg"; // 要识别的图片文件名
Mat image = Imgcodecs.imread(filename); // 读取图片
MatOfRect carDetections = new MatOfRect();
carDetector.detectMultiScale(image, carDetections, 1.1, 3, 0, new Size(50, 50), new Size());
System.out.println("检测到 " + carDetections.toArray().length + " 辆汽车");
for (Rect rect : carDetections.toArray()) {
Imgproc.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),
new Scalar(0, 0, 255), 3); // 在图片中标记汽车位置
}
Imgcodecs.imwrite("car_detected.jpg", image); // 保存标记后的图片
}
}
```
上述代码使用 `CascadeClassifier` 类加载名为 `cars.xml` 的汽车分类器,并使用 `detectMultiScale()` 方法在图片中检测汽车。在 `for` 循环中,我们使用 `rectangle()` 方法在图片中标记汽车的位置,然后使用 `imwrite()` 方法将标记后的图片保存到磁盘中。
注意,在运行上述代码之前,您需要先下载并安装 OpenCV 库,并且将 `cars.xml` 文件放在项目目录下。此外,您还需要在编译选项中添加 OpenCV 库的路径和链接选项。
阅读全文