我一直无法找到关于如何使用C#和openCV进行跟踪来实现FAST功能检测算法的教程,我无法从文档中找到它.如何实现FAST特征检测和特定的特征匹配(类似于SURF特征跟踪示例).
有帮助吗?
我有一个opencv 3的问题:我想使用一个特征检测器SimpleBlobDetector,即将使用凸度和圆度的滤镜.但是当我尝试执行代码时,会跟踪以下错误:
在detectAndCompute中未实现函数/特性()
然后应用程序崩溃.
我没有任何相关的答案在互联网上搜索信息.我认为第三版Opencv可能会对这个错误负责,因为我知道我使用探测器的方式很好(我尝试的方式与官方的opencv教程完全相同)而且我注意到SimpleBlobDector已经针对第三个版本进行了修改.
使用断点,我知道以下行崩溃:
detector.detect(灰色,关键点);
SimpleBlobDetector已创建(使用create函数)并已配置,灰色图像不为空,并且在检测之前不需要填充关键点矢量.
我使用opencv 3.0.0,使用QtCreator在MinGW中编译.opencv处理不是从主线程启动的.
其他人有同样的问题吗?如果我能使用其他课程获得补丁或其他解决方案,我将不胜感激.我真的需要使用凸度来过滤我的斑点,我发现的其他探测器(FeatureDetector或Brisk)不能配置,只返回关键点,没有面积或丰满度参数来计算凸度.
提前致谢
我刚刚使用了ORB的开源实现.
如何通过添加新模块来进一步实现ORB?
为了获得比使用ORB更好的结果,我能做些什么呢?
我正在考虑使用RANSAC来消除异常值并获得更好的结果.
我们在这一点上等待进一步实施ORB的想法.
有关圆形和三角形的Homography实现的任何想法?
我有一个质量很重的OpenGL游戏,我想根据设备有多少RAM进行调整.最高分辨率的纹理我在iPhone 4或iPad2上运行良好,但早期的设备在加载纹理的过程中崩溃.我有这些纹理的低分辨率版本,但我需要知道何时使用它们.
我目前的策略是检测特定的旧设备(3GS有低分辨率屏幕; iPad没有摄像头),然后只加载IPad2及以上和iPhone 4及以上的高分辨率纹理 - 我想我需要为iPod touch做点事.但我更倾向于使用特征检测而不是硬编码设备模型,因为模型检测对于API和硬件的未来变化是脆弱的.
我正在考虑的另一种可能性是首先加载高分辨率纹理,然后在我得到低内存警告时丢弃并用lo-res替换它们.但是,我不确定我是否有机会回应; 我注意到应用程序经常在调试控制台上出现任何通知之前死掉.
如何检测我正在运行的设备是否有足够的RAM来加载我的纹理的高分辨率版本?
退后一步,是否还有一些我可以使用的自适应技术,这是特定于OpenGL纹理内存的?
笔记:
我搜索和关闭SO以获得与可用RAM检测相关的答案,但它们基本上都建议分析内存使用情况并消除浪费(最大限度地缩短临时工作的寿命,以及所有这些).我已经做了尽可能多的事情,而且我无法将高分辨率纹理压缩到旧设备中.
PVRTC不是一种选择.纹理包含片段着色器要使用的数据,并且必须以无损格式存储.
我想跟踪视频中的对象(例如,移动的球).参考opencv教程 - 'Features2D + Homography来查找已知对象',我已经能够通过提供参考图像在静止图像中跟踪我的对象.我打算使用参考图像从输入视频的第一帧中检测移动物体.对于下一帧,在前一帧中检测到的对象应充当参考图像,依此类推.
但我不知道如何从描述符中找回一个对象.其中包含多个对象的图像将具有多个关键点,但如何查找关键点或一组关键点属于图像中的哪个对象.
我正在尝试使用计算机视觉实现uni项目的人数统计系统.目前,我的方法是:
问题是如果人们成为团体,我的方法只算一个人.从我的阅读中,我相信这就是所谓的遮挡.另一个问题是当人们看起来与背景相似(使用深色衣服并穿过黑色柱子/墙壁)时,斑点被分开,而实际上是一个人.

根据我的阅读,我应该实现一个探测器+跟踪器(例如使用HOG检测人类).但是我的检测结果很差(例如,50%的误报率,50%的命中率;使用OpenCV人体探测器和我自己训练的探测器),所以我不相信使用探测器作为跟踪的基础.感谢您的回答和阅读这篇文章的时间!
我试图用ORB检测关键点一切正常,直到我切换到Opencv 2.4.9.
第一,似乎键的数量减少了,对于某些图像,没有检测到关键点:
这是我用两个版本编译的代码:(2.3.1和2.4.9)
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/features2d/features2d.hpp>
using namespace cv;
int main(int argc, char **argv){
Mat img = imread(argv[1]);
std::vector<KeyPoint> kp;
OrbFeatureDetector detector;
detector.detect(img, kp);
std::cout << "Found " << kp.size() << " Keypoints " << std::endl;
Mat out;
drawKeypoints(img, kp, out, Scalar::all(255));
imshow("Kpts", out);
waitKey(0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果:2.3.1:找到152个关键点

2.4.9:找到0个关键点

我还测试了一个不同的ORB构造函数,但我得到了相同的结果,没有KPts.与2.3.1默认的构造函数中相同的构造函数值:2.4.9 custom constr:
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/features2d/features2d.hpp>
using namespace cv;
int main(int argc, char **argv){
Mat img = imread(argv[1]);
std::vector<KeyPoint> kp;
// default in …Run Code Online (Sandbox Code Playgroud) 我想使用svm分类器进行面部表情检测.我知道opencv有一个svm api,但我不知道应该用什么来训练分类器.到目前为止,我已经阅读了很多论文,所有这些都是在面部特征检测后训练分类器时说的.
到目前为止我做了什么,

注意:我知道如何只用正片和负片训练SVM,我在这里看到了这段代码,但我不知道如何将面部特征信息与它结合起来.
有人可以帮我开始用svm进行分类.
一个.什么应该是训练分类器的样本输入?
湾 如何使用此面部特征点训练分类器?
问候,
我试图在两个图像之间显示匹配的关键点(一个是从我的相机捕获的,另一个是从数据库中捕获的)
任何人都可以帮助我在我的代码中编写DrawMatches函数,以显示2个图像之间匹配的行.
这是我的代码:
public final class ImageDetectionFilter{
// Flag draw target Image corner.
private boolean flagDraw ;
// The reference image (this detector's target).
private final Mat mReferenceImage;
// Features of the reference image.
private final MatOfKeyPoint mReferenceKeypoints = new MatOfKeyPoint();
// Descriptors of the reference image's features.
private final Mat mReferenceDescriptors = new Mat();
// The corner coordinates of the reference image, in pixels.
// CvType defines the color depth, number of channels, and
// channel layout in the …Run Code Online (Sandbox Code Playgroud) 像polyfill.io这样的 Polyfill 服务似乎只向浏览器提供小功能检测,然后只延迟加载实际需要的 polyfill。
据我了解关于 polyfilling的babel 文档,babel 总是包含全套可能需要的 polyfill:它会处理 a browserslist,然后包含最弱浏览器需要的 core-js 中的那些 polyfill。像 webpack 这样的打包器可能会将所有这些 polyfill 合并到应用程序中,但不会检测到运行时功能。
我的应用程序使用现代 ES 语言功能,但也针对各种浏览器,包括 IE10 和 IE11。这需要大量的 polyfill,并且可能会使包膨胀,尤其是对于可能不需要大部分 polyfill 的现代浏览器。
所以我想知道:我可以告诉 babel 和/或 webpack 只包含功能检测,将 polyfill 分成单独的块(单独或分成小包),然后在运行时,只“懒惰”加载实际上是什么需要吗?