我正在用Java编写一个程序,可直接从摄像机输入检测车牌。我使用OpenCV来应用自适应阈值,找到轮廓,并检查每个轮廓的尺寸以确定它是否是板。这非常有效,但是在根据一天中的时间进行自适应阈值处理时,我必须手动更改adaptiveThreshold方法的C常量参数。例如,如果我在夜间白天使用相同的常量,则生成的二进制图像没有白色部分,因此未检测到轮廓。我想知道是否有办法以某种方式根据亮度和/或对比度确定C常数,以便在应用阈值时,板被检测为任何物体中的轮廓。如果有帮助,我可以发布代码。
提前致谢。
答案 0 :(得分:1)
如果您知道与黑色像素相比有多少白色像素,则可以动态计算阈值。例如,让我们假设您希望二进制图像为80%白色和20%黑色。然后,您可以计算阈值,以便满足这些条件。
另一种方法是随着时间的变化凭经验改变阈值。这至少要求您的系统可以访问时间,最好是日期。