首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >指定在视频帧中检测到的车辆类型

指定在视频帧中检测到的车辆类型
EN

Stack Overflow用户
提问于 2014-11-28 09:16:25
回答 1查看 974关注 0票数 1

我在试着在video frame.里探测车辆更具体地,是检测车辆,然后计算检测到的车辆的数量。

顺便说一下,我使用的是MathWorks:打开这个链接的MATLAB代码。

所以你可以在上面的链接中找到更多细节..。

假设我们提取了一个特定的视频帧。我需要的是,通过增加更多的行来扩展代码,这些行可以进一步指定检测到的车辆的类型(如果是汽车或轨道)?例如)。

Concerning the original code used by Mathworks:

1)导入视频(待处理)并初始化前景颜色检测器:

这样做的目的是为了使视频的处理更加容易。因此,我们不需要处理整个视频,而是可以将我们的处理应用到一个框架中,在这个帧中,所有的运动对象都被从背景中分割出来。前景检测器需要一定数量的视频帧来初始化高斯混合模型。此示例使用前50帧初始化混合模型中的三种高斯模式。

代码语言:javascript
运行
复制
foregroundDetector = vision.ForegroundDetector('NumGaussians', 3, ...
    'NumTrainingFrames', 50);

videoReader = vision.VideoFileReader('visiontraffic.avi');
for i = 1:150
    frame = step(videoReader); % read the next video frame
    foreground = step(foregroundDetector, frame);
end

2)视频帧中的车辆检测:

不幸的是,前景颜色检测器并不完美,因为它提供了一些附加噪声。因此,为了消除添加的噪声,执行“形态学概念”将是很有趣的:

代码语言:javascript
运行
复制
se = strel('square', 3);
filteredForeground = imopen(foreground, se);
figure; imshow(filteredForeground); title('Clean Foreground');

3)然后,利用vision.BlobAnalysis对象,找到与运动汽车相对应的每个连通部件的包围盒。该对象通过拒绝包含小于150个像素的块来进一步过滤检测到的前景。

代码语言:javascript
运行
复制
blobAnalysis = vision.BlobAnalysis('BoundingBoxOutputPort', true, ...
    'AreaOutputPort', false, 'CentroidOutputPort', false, ...
    'MinimumBlobArea', 150);
bbox = step(blobAnalysis, filteredForeground);

( 4)让我们用一个小的矩形框来突出显示每个检测到的车辆:

代码语言:javascript
运行
复制
result = insertShape(frame, 'Rectangle', bbox, 'Color', 'green');

5)计算视频帧中出现的车辆数量:

代码语言:javascript
运行
复制
numCars = size(bbox, 1);
result = insertText(result, [10 10], numCars, 'BoxOpacity', 1, ...
    'FontSize', 14);

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-08 02:41:27

这个问题是一个积极的研究领域,有许多可能的方法。一种可能是训练分类器来区分汽车和卡车。您可以使用这个演示如何使用HOG特征和SVM分类器对数字进行分类的示例开始工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27185316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档