帮我写一段使用OpenCV的目标检测函数
时间: 2023-12-24 17:02:50 浏览: 28
好的,下面是一个简单的使用OpenCV进行目标检测的函数:
```
#include <opencv2/opencv.hpp>
void detect_objects(cv::Mat image) {
// 加载目标检测模型(例如Haar级联分类器)
cv::CascadeClassifier cascade;
cascade.load("path/to/model.xml");
// 调整图像大小
cv::Mat gray_image;
cv::cvtColor(image, gray_image, cv::COLOR_BGR2GRAY);
cv::resize(gray_image, gray_image, cv::Size(640, 480));
// 进行目标检测
std::vector<cv::Rect> objects;
cascade.detectMultiScale(gray_image, objects, 1.1, 3, 0, cv::Size(80, 80));
// 绘制矩形框标记检测到的目标
for (int i = 0; i < objects.size(); i++) {
cv::rectangle(image, objects[i], cv::Scalar(0, 255, 0), 2);
}
// 显示检测结果
cv::imshow("Detected Objects", image);
cv::waitKey(0);
}
```
这个函数可以通过加载一个目标检测模型(例如Haar级联分类器)来检测图像中的目标。函数首先将图像转换为灰度图像并调整大小,然后使用`detectMultiScale`函数进行目标检测,最后在图像中绘制矩形框标记检测到的目标。