问题标签 [lbph-algorithm]
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.
c++ - 为什么 OpenCV 只在训练图像中识别对象?
为了让我的 iOS 应用程序能够识别 1 欧元、2 欧元和 0.50 欧元的硬币,我一直在尝试使用opencv_createsamples
并opencv_traincascade
创建自己的分类器.xml。因此,我从一个短视频中裁剪了 60 张 2 欧元硬币的图像,如下所示:
然后,我使用opencv_createsamples
. 我获得了 12000 张与此类似的图像:
我运行了以下命令:
opencv_createsamples -img positives/i.jpg -bg negatives.txt -info i.txt -num 210 -maxidev 100 -maxxangle 0.0 -maxyangle 0.0 -maxzangle 0.9 -bgcolor 0 -bgthresh 0 -w 48 -h 48
(对于 i 从 0 到 60)
cat *.txt > positives.txt
opencv_createsamples -info positives.txt -bg negatives.txt -vec 2.vec -num 12600 -w 48 -h 48
opencv_traincascade -data final -vec 2.vec -bg negatives.txt -numPos 12000 -numNeg 3000 -numStages 20 -featureType LBP -precalcValBufSize 2048 -precalcIdxBufSize 2048 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -w 48 -h 48
训练在第 13 阶段停止。一旦我得到一个,cascade.xml
我立即(用 )在我的智能手机拍摄的一张简单图像上尝试了它,detectMultiScale()
但没有检测到:
而如果我将其中一张用作培训的图像作为输入,那么它的效果非常好:
我真的不明白为什么会发生这种情况,这让我发疯,最重要的是因为我已经努力让它工作好几个星期了......你能告诉我我在哪里犯了错误吗?
我写的小程序在这里:
我还尝试考虑我的 OpenCV 3.1 版的特征单应性。因此,我为我的版本下载了 opencv_contrib 并尝试编译 xfeatures2d 模块,但在 CMakeList 文件中出现 CMake 错误...而且 xfeature2d 甚至不存在于 xcode 的 opencv 框架中,所以即使我让它在我的电脑上工作,我也可以无论如何不要在iOS中使用它...
更新
正如建议的那样,我刚刚尝试删除equalizeHist(src_gray, src_gray);
并在detectMultiScale()中设置了邻居的数量,这就是我得到的:
更新 2
正如有人建议的那样,按照本教程,我刚刚创建了一个 .vec 文件,仅使用裁剪的正图像,即只有硬币的图像。我使用了这个命令:
opencv_createsamples -vec i.vec -w 48 -h 48 -num 210 -img ./positives/i.jpg -maxidev 100 -maxxangle 0 -maxyangle 0 -maxzangle 0.9 -bgcolor 0 -bgthresh 0
(对于 i 从 0 到 60)
如您所见,没有使用背景图像来创建样本。然后,下载mergevec.py后,我将所有向量文件组合在一起。现在我要开始另一个 LBP 培训......我希望它会更好地工作
opencv - How to implement LBP uniform
I'm new in OpenCV. I'm trying to do a sample to extract the features of a face. I'm rading several papers and one of the most recommended was LBP. I understand how to works LBP descriptor but I read a variant from it. LBP uniform I understand it is as LBP original but once you have binary sequence (e.g you compare a particular pixel with the neighboors and you have next result -> 11110001, I understand there are 2 transitions, so in that case we can say it is uniform because number of transitions is <= 2.
My question is what code I have to comput in that pixel after doing this process. I know with the LBP original wew have 256 values but with this variant from LBP uniform que reduce the number to 59 bins values. So my question is what code I have to put after testing if the number of transitions in every pixel is <=2 or >2.
Thanks! I hope I had explained correctly.
python - 在树莓派 opencv 2.4.1 和 python 中找不到 createLBPHFaceRecognizer() 模块
我正在尝试在树莓派中开发人脸识别系统,所以我使用“apt-get python-opencv”下载了用于 python 的 opencv,它下载了 opencv 2.4.1,现在当我使用“recogniser=createLBPHFaceRecogniser()”时,它显示错误。
“回溯(最近一次通话最后一次):
文件“”,第 1 行,n
识别器=创建LBPHFaceRecognizer()
NameError:未定义名称'createLBPHFaceRecogniser()'
opencv - OpenCV 的 createLBPHFaceRecognizer 中的半径参数是什么?
该文档在 2.4 和 3.0 版本站点上都截断了中间句子...(链接:http ://docs.opencv.org/3.0-last-rst/modules/face/doc/facerec_api.html#createlbphfacerecognizer )
radius – 用于构建 Circular Local Binary Pattern 的半径。半径越大,
我从阅读有关 LBPH 的论文中对此的猜测是,半径与每个补丁所考虑的区域有关?
我正在尝试为此找出一个好的值,并且很高兴确切地知道不同的值对应于什么。
opencv - 改进使用 LBP 检测面部表情的精度算法
我正在开发一种简单的算法来检测几种面部表情(快乐、悲伤、愤怒......)。我是根据这篇论文来做的。我在应用 LBP 统一算子之前进行预处理,将标准化图像划分为 6x6 区域,如下例所示:
通过应用统一的 LBP,为每个区域提取了 59 个特征,所以最终我有 2124 个图像特征(6x6x59)。当我有大约 700 张图像来训练模型时,我认为这是太多的壮举。我读过这并不好获得良好的精度。我的问题是如何减少专长的维度或其他技术以提高算法的精度。
c++ - 为什么 DLIB 计算 LBP 统一描述符的平方根?
我正在使用 dlib 库从给定图像中提取 LBP 统一。我正在使用下一个函数(http://dlib.net/dlib/image_transforms/lbp_abstract.h.html#extract_uniform_lbp_descriptors),但我不明白第三个参数(cell_size
)的功能是什么。在文档中说下一个:
我们将取所有直方图元素的平方根。也就是说,
#feats[i]
是出现在其相应窗口中的 LBP 数量的平方根。
我不知道什么时候说“#feats[i]
是 LBP 数量的平方根”。指的是什么?如果有人可以帮助我,我将不胜感激......谢谢!
python - 为什么 scikit-image 中的 local_binary_pattern 函数为不同的模式提供相同的值?
我正在使用local_binary_pattern
scikit-image 包中的函数。我想计算半径 1 内 8 个邻居的旋转不变均匀 LBP。这是我的 Python 代码:
这是输出
让我感到困惑的是,一些相同的值lbp
并不对应于相同的统一模式。例如lbp[1, 1]
和lbp[2, 2]
都是6
,但 LBPimage[1, 1]
是:
的 LBPimage[2, 2]
为:
根据 中的值lbp
,我假设该local_binary_pattern
函数使用“大于或等于”与邻居进行比较。
image[1, 1]
和的 LBPimage[2, 2]
都是一致的。但是如何能够image[1, 1]
和image[2, 2]
具有相同的 LBP 值呢?
python - 本地二进制模式中的意外行为 - python skimage
我最近遇到了问题,python skimage 中的本地二进制模式方法产生了意想不到的结果。
看看下面的卡通例子。它在纯色背景上显示两个纯色圆圈。
局部二进制模式(P=8 个样本,Radius=1)输出为:
(图像以喷射颜色进行颜色编码)。灰色正确地表示 255。但是,蓝色是 85 (二进制 01010101)。
因此,虽然该方法正确地将背景和右侧的圆圈显示为 255,但将左侧的圆圈显示为 85。显然,skimage 中的局部二值模式方法认为该区域是完全嘈杂的(因此交替二值模式为 01010101)。然而,这不是真的,因为我已经仔细检查了上面蓝色区域中的各个像素并且它们的值是相同的(即它的平面颜色,就像平面颜色背景和其他平面色圈一样)。
有没有人遇到过类似的问题?
如果你想复制它,这里是代码:
python - 多面人脸识别不检测多面人脸
我写了一个小程序,它检测面部并将它们保存到训练文件中进行识别。
我对这个算法有一些麻烦。有时它会抛出错误,即 LBPH::Train 输入的是空数据,这是错误的。
OpenCV 错误:不支持的格式或格式组合(给出了空的训练数据。您需要多个样本来学习模型。)在 cv::LBPH::train, file ........\opencv \modules\contrib\src\facerec.cpp,第 917 行 Traceback(最后一次调用):
此外,该算法检测到多个人脸,但将其识别为同一张人脸,这是错误的。
有人可以提示我缺少什么吗?