opencv忽略帧上的某些对象
opencv Ignore some object on frame
我在街上有网络摄像头,我想跟踪每辆车移动的内部摄像头i用于此背景基板现在我只想让opencv上的想法或方法帮助我忽略一些对象我的意思是跟踪街上的每一件事,忽略一个物体——它是人我是opencv 的新手
我试试它的
Ptr<BackgroundSubtractor> pMOG2;
pMOG2 = createBackgroundSubtractorMOG2();
到代码的末尾
我使用背景子字符串,因为它跟踪前面的每一个移动忽略仅限人类的的任何想法
好吧,如果你想忽略人对象,你应该首先知道哪些对象是人,哪些不是人。
通常,要在图像(或视频流(中查找人员,需要使用人员检测器。您可以使用HogDescriptor
HOGDescriptor hog;
hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());
将HOG描述符应用于人员检测的示例可以在opencv_source_code/samples/cpp/peopledetect.cpp 中找到
将HOG描述符应用于人员检测的GPU示例可以在opencv_source_code/samples/GPU/HOG.cpp 中找到
然后,你可以检查你的移动对象是否是人,并决定是否忽略它们。
由于您想要跟踪汽车,一种更简单的方法是基于一个人比汽车小,或者(参考他们的边界框(对于一个人来说,高度通常大于宽度(通常是一个人站着或走着(,对汽车来说是另一种方式。可以应用简单的几何约束来忽略应该是人的内容。
您可以根据相机分辨率和视图设置人的边界框的最大面积。让我们将这个面积值称为
maxAreaPerson
,然后对于每个移动的对象,您都会得到边界框(您可能已经这样做了,或者只使用boundingRect(...)
(。如果方框面积小于maxAreaPerson
,则忽略它。您可以定义最大宽度、高度、纵横比或它们的组合,而不是定义最大面积。
若离摄影机较远,你们的物体可能会更小。纵横比非常有用,因为它不受对象相对于摄影机的距离的影响。或者,您可以在视图中定义几个区域(例如,靠近摄影机、远离摄影机、非常远离摄影机(,并为每个区域定义约束。
- Tensorflow对象检测在Python和C++(OpenCV)之间有不同的结果
- openCV C++将对象/斑点简化为质心
- Opencv,在图像中的对象周围绘制一个框
- OpenCV Otsu的阈值:计算多个Mat对象的单个阈值
- 将 OpenCV 帧另存为对象
- 如何将图像缓冲区传递到OpenCV垫子对象
- 与 Python 共享 OpenCV C++ 对象
- OPENCV SVM-对象不属于任何受过训练的类
- 如何使用OpenCV从图像中检测旋转对象
- C++中的对象序列化,用于存储 OpenCV 的 SVM 对象 [OpenCV 3.1.0]
- OpenCV 检测多个旋转的缩放对象
- 将一个 OpenCV OutputArrayOfArrays 对象复制到另一个对象
- OPENCV从Yuyv Pixelformat视频框架创建YUV420或灰度垫子对象
- OpenCV程序的输出在未检测到文本对象时不给出0
- OPENCV(C ) - 从已知的3D对象和相机位置计算图像的2D坐标
- 将数组分配给OPENCV C 中的初始化垫子对象
- OpenCV Mat对象复制速度更快
- OpenCV-C++中Mat对象的平均值
- 计算检测到的对象OPENCV
- 垫子对象 OpenCv 上的数学运算