我正在尝试使用 OpenCV 从 Google 街景中检测路灯。
现在作为样本,我有 2000 张正图像,但只有 1200 张的比例大致相同,所以我仅使用它进行训练。
还有另外 2300 张负片图像。
正面图像示例:

我尝试将它们采样到不同的大小,并训练它们,但现在当我用这样的图像进行测试时,检测效果非常差:
![测试图像[6]](https://i.stack.imgur.com/qSEWl.jpg)
根据detectMultiScale参数,我要么得到很多矩形,包括灯,要么得到一些矩形,但不包括实际的灯。
在训练中,我主要修改高度和宽度参数,参数示例:(200, 10) (150, 30),(120, 30)。我也尝试将算法从 LBP 更改为 HAAR,但结果相似。
你认为我需要超过 1000 个阳性样本吗?
在创建矢量文件之前我应该进行任何额外的预处理吗?
您知道我应该更改哪些参数才能使其正常工作吗?
OpenCV 是否可以检测谷歌街景图像中的灯?
我正在尝试制作一种编程语言。尝试将lambda编译为模块时,更确切地说,当尝试使用Convert.ChangeType而不是t.Parse从字符串转换为t(某些类型)时,会出现问题。如果我使用LambdaExpression.Compile并在委托上使用DynamicInvoke,则可以使用,但如果我使用CompileToMethod并生成一个模块(abc.exe)并使用Convert.ChangeType进行转换,则在运行模块时会引发异常: System.TypeAccessException未处理消息=通过方法'Foo.Main()'尝试访问类型'System.RuntimeType'失败。
转换方法:
private static Expression ConvertExpression<T>(Expression exprToConvert)
{
Type[] types = new Type[] { typeof(object), typeof(Type) };
MethodInfo changeTypeMethod = typeof(System.Convert).GetMethod("ChangeType", types);
Expression convertedExprAsObject = Expression.Call(changeTypeMethod, exprToConvert, Expression.Constant(typeof(T)));
return Expression.Convert(convertedExprAsObject, typeof(T));
}
Run Code Online (Sandbox Code Playgroud)