写一段计算机视觉中检测目标尺寸的代码
时间: 2024-03-15 10:46:11 浏览: 8
以下是使用OpenCV库来检测图像中目标尺寸的C++代码示例:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取图像
Mat image = imread("test.jpg", IMREAD_COLOR);
// 定义目标尺寸
int target_width = 100;
int target_height = 100;
// 转为灰度图像
Mat gray_image;
cvtColor(image, gray_image, COLOR_BGR2GRAY);
// 检测目标
vector<Rect> targets;
CascadeClassifier classifier("cascade.xml");
classifier.detectMultiScale(gray_image, targets, 1.1, 3);
// 在图像中绘制矩形框
for (size_t i = 0; i < targets.size(); i++)
{
Rect target = targets[i];
rectangle(image, target, Scalar(0, 255, 0), 2);
}
// 显示原图像和检测结果
namedWindow("Original Image", WINDOW_NORMAL);
namedWindow("Detected Image", WINDOW_NORMAL);
imshow("Original Image", image);
imshow("Detected Image", gray_image);
// 等待按键
waitKey(0);
return 0;
}
```
在上面的示例中,我们首先使用`imread()`函数读取了名为`test.jpg`的图像,然后定义了目标尺寸为100x100。接下来,我们使用`cvtColor()`函数将图像从BGR空间转换为灰度空间。然后,我们使用级联分类器(CascadeClassifier)来检测目标,并将结果存储在名为`targets`的向量中。最后,我们使用`rectangle()`函数在图像中绘制矩形框,并使用`imshow()`函数显示了原图像和检测结果,并使用`waitKey()`函数等待按键。需要注意的是,这里的`cascade.xml`是一个级联分类器的训练模型,需要根据具体的应用场景进行训练。