问题标签 [haar-classifier]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opencv - 具有类似 haar 的功能和 camshift 的车辆跟踪
我正在尝试使用移动摄像头跟踪车辆。车辆由OpenCV 中基于 Haar 特征的级联分类器检测。我在这里使用预训练数据集。根据对象跟踪调查(2006 年),跟踪对象分为三类:点或邻域、内核或形状,或者跟踪可以基于对象的轮廓或其允许者。我认为我的方法属于第二类。因此,我首先尝试了 camshift 算法。
然而,在检测阶段,我得到了很多误报,这使得跟踪效率低下。我的问题是如何消除误报?
我正在考虑为每一帧计算所有边界框(包括误报)的直方图。然后,对下一帧执行相同操作并比较直方图以创建置信度。你认为这是个好主意吗?
我也有想法在检测之前应用处理(例如:分割背景/前景减法,阈值等),但这些更适合固定相机而不是移动相机。我需要继续和 Haar 合作一段时间,至少试一试。任何建议都会很棒。
c++ - OpenCV haartraining:Mergevec 错误:输入文件不存在或不可读
按照本教程,我创建了正样本,但现在需要使用 mergevec 合并它们。我下载了提供的 mergevec.exe 二进制文件并获得了两个所需的 dllcxcore100.dll
和highgui100.dll
. 但是,当我像这样运行它时:
它给了我错误:
ERROR: Input file <filename> does not exist or not readable.
我应该怎么做才能解决这个问题?我的 vec 文件很好,因为我可以使用该opencv_createsamples
实用程序查看它们。所以我知道他们很好。
c++ - Mergevec.obj:10 个未解决的链接错误(用于 haartraining 的 OpenCV 样本集合)
使用本教程,我正在尝试合并使用创建的不同向量,opencv_createsamples
以便我可以进行一些训练。
我正在使用 VS 2010 命令行界面编译 mergevec.cpp:
但是我在这里收到了 10 个未解决的外部错误:
我该如何解决这些问题?我需要获取一些 .dll 吗?我一直在努力让 mergevec 在不同的机器上工作 2 天!这是旧的问题吗?
顺便说一句,我将代码中的所有引用从 更改"cv.h"
为"opencv.h"
,因为那是当前头文件的名称。
我正在尝试mergevec.cpp
在具有以下结构的文件夹中编译:
该文件夹opencv2
有目录:core, highgui, flann, contrib
等等等。
编辑
根据您的评论,我更改了命令以包含库:
但它仍然显示相同的 10 个未解决的外部。绝望中,我什至尝试包含每个库文件,但没有区别。
opencv - OpenCV,Haar 级联分类器:缩放特征还是计算图像金字塔?
我读了维奥拉和琼斯的论文。他们在论文中明确指出,他们的算法比其他算法更快,因为通过缩放特征矩形来避免计算图像金字塔。
但是我google了很久,才发现OpenCV实现了图像金字塔的方法,而不是缩放特征矩形。并为金字塔中的所有子图像计算积分图像。如果该算法用于处理视频而不是图片,则对每一帧都执行此操作。
这种选择的理由是什么?我不太明白。
我能理解的完全相反:对于视频应用,缩放特征只需要做一次,缩放后的特征可以被所有帧重用。并且只需要计算整个图像的积分图像。
我对此是否正确?
Viola 和 Jones 还在 Pentium 3 计算机上展示了 15fps 的帧速率,但我几乎看不到有人通过现代计算机上的 OpenCV 实现实现了这种性能。这很奇怪,不是吗?
任何输入都会有所帮助。谢谢你。
c++ - 用于面部表情的 haar 级联分类器训练的负图像
我正在尝试创建自己的级联分类器来使用 OpenCV 检测图像中的面部表情。我知道我需要收集正片和负片图像,其中正片包含要检测的对象,而底片则不包含。在人脸检测中,底片是没有人脸的图像。为了为某个面部表情创建一个级联分类器,底片应该是具有中性表情的人,还是只是没有人脸的图像?
目标是检测一些表情(中性、微笑/大笑、兴奋、无聊/悲伤)。
opencv - OpenCV Haar分类器-它是SVM吗
我在工作中使用了 OpenCV Haar 分类器,但我一直在阅读关于 OpenCV Haar 分类器是否是 SVM 的相互矛盾的报告,谁能澄清它是否使用了 SVM?此外,如果不使用 SVM,Haar 方法与 SVM 方法相比有什么优势?
opencv - Haarcascade分类器训练
我正在尝试使用我用相机拍摄的样本创建一个 xml 文件。这是一个测试运行,我把相机靠在窗户上,让它每隔 30 秒拍一张经过的汽车的照片。我现在有大约 200 张图片(仅用于一个小测试),但我无法进一步了解。
我制作了一个选择工具来挑选图片(边界框)上的汽车,如果没有,则将图片标记为底片。以下是应用程序外观的 2 个示例:
然后应用程序将标记的对象保存在positive.txt
文件中,如下所示,跳过未标记的图片或标记为负片的图片:
负片简单地保存到negative.txt
文件中,如下所示:
最后,我尝试运行 haar 训练算法/usr/bin/opencv_haartraining -data samples -vec positive.txt -bg negative.txt -npos 99 -nneg 20 -nstages 5 -mem 128 -minhitrate 0.999 -maxfalsealarm 0.5 -nonsym -mode ALL
。
不要介意这些设置,我只需要在使用功能更强大的计算机对具有更多图片的实际数据进行实际训练之前就可以使用它。
为此,我得到以下输出和错误:
有人知道那是什么意思吗?为什么样本大小有错误,不管是什么......我也尝试用绝对路径替换相对路径,但我得到了同样的错误。我正在尝试做的事情实际上是正确的,我还没有找到任何关于如何从现有和标记的图片创建分类器的明确示例。
python - 人脸检测两只眼睛重叠
所以我做了一个跟踪脸部的小脚本,然后搜索两只眼睛,然后搜索左眼和右眼。
问题是,即使是左右,它也会重叠。
打印显示:
我尝试用 face.boundingBox(twoeyes) 裁剪脸部,他们搜索左右,但它总是给我(无,无)。
另外,当 findHaarFeatures("face.xml") 给我超过 1 张脸时,我遇到了问题,我通过选择列表中的第一个来克服这个问题,但我想选择其中最大的,如何我可以比较两个功能的大小吗?
最后,有没有更好的方法来查找其他内部的特征,而不是使用裁剪和 if 语句“某事!=无”?
顺便说一句,我正在使用来自相机的原始图像,用一些对比度、饱和度、findedges 或其他任何东西来更好地找到特征会更好吗?
python - 使用 HAAR 级联和 OpenCV 识别图像中的对象
(这出来有点长,但它主要是一个很难理解的解释:)
对于我拥有的项目,我需要识别一般形式的对象,如下所示 -
在包含不同形状的更大图像中,比如这个 -
正如你所看到的,我正在寻找的对象是一条红线,两边都有十字(最后一张图片中有 5 个)。我有大约 4,000 张图像库,我需要在其中找到对象,其中一些包含这些对象,而其中一些不包含,就像这张图片 -
在做了一些研究之后,我发现使用 haar 级联和 openCV 是可行的方法,所以我编写了一个脚本,遍历所有上述 4,000 张图像并提取分离的轮廓,就像这个问题中的第一张图像一样。
然后,我遍历了许多轮廓,抓取了大约 150 个(即 150 个仅包含我需要的对象的文件,类似于第一个图像)和大约 180 个不包含我需要的对象的图像(类似于第三张图在这里)。
然后我开始了训练过程,使用了几个教程,但主要是这个。
这样做时,我遇到了一个问题 - 如您所见,所需的双叉对象的图像大小不同,甚至没有相同的比例(因为它们可以以任何角度出现 - 水平,对角, ETC..)。
起初我尝试使用不同尺寸的图像,但这会导致训练过程中出现错误,因此,为了解决这个问题,我将所有正图像的尺寸更改为 350x350(其中一个的最大比例)对象)。为了清楚起见-我没有调整图像的大小-我只是在周围添加了空白以使所有图像都为 350x350 像素。
然后我按照教程中的建议完成了培训过程 - 我创建了样本(宽度 - 24,高度 - 24)并创建了一个级联 xml 文件,结果证明它不是很大(45kb)。
现在,我知道 150 张正面图像和 180 张负面图像并不多,但我想至少在过滤更多图像并投入更多时间之前进行概念验证。
完成 cascade.xml 文件后,我尝试使用它来定位某些图像中的某些对象(使用cv2.CascadeClassifier('cascade.xml')
并且cascade.detectMultiScale(img)
每次尝试都返回零结果。
最后,我什至尝试在其中一张正面图像中定位一个对象(其中只包含一个所需的对象),但它也返回零结果。
我尝试调整参数,cascade.detectMultiScale(img)
目前我正在训练一个具有 36x36 样本的级联文件,但我不相信它会起作用。
由于我对这些东西很陌生,所以我想知道我做错了什么,我想我会在这里问。
进一步来说:
- 您认为在这种情况下使用 haar 是否正确?我应该使用其他物体识别方法吗?
- 正面图像尺寸会成为问题的根源吗?如果是这样,我该怎么做?
如果我没有包含一些重要数据,请让我知道我会发布它。
非常感谢你的帮助,丹
c++ - 打开 CV Haarcascades 无法正常工作
我编写了一个用于面部和眼睛检测的代码,以前运行良好,但现在由于未知原因,程序出现问题并显示一条消息,表明您的项目已停止工作......请查看以下代码和注释的行号有问题,程序停在那里