(C#, EmguCV) 我已经为黑色背景白色前景牌照号码开发了anpr。但我是红色背景板的堆栈。我使用灰度和大津阈值和轮廓形态等预处理来检测字符。但是对于红板,阈值的结果是白色区域(图2),因此字符被遗漏。有什么帮助吗?
问问题
428 次
2 回答
1
不知道您使用的是什么软件/硬件,但只是:当您通过另一个原色滤光片(例如绿色)查看红色时,它会变成黑色,而白色文本会变成绿色。(通过绿色过滤器的黑色也保持黑色,白色文本再次变为绿色。)
于 2017-02-16T15:52:12.160 回答
0
由于您正在收集候选者,因此请尝试将图像拆分为多个层,以便获得红色、绿色和蓝色的灰度图像。在红色图像上,盘子应该是全白的(因为它是灰度图像,越红,它现在变得越白),但在绿色和蓝色的盘子上,盘子应该是黑色或深绿色,带有白色的数字和字符.
如图所示,蓝色和绿色正好适合您的需求,而红色代表一个白色矩形(用于更快地检测候选人)
Mat 和 Image 为此提供了一些不错的方法;它应该有帮助:
Mat[] Split(); // from Mat
TDepth[,,] Data; // from Image<TColor, TDepth> or even better:
Image<Gray, TDepth>[] Split(); // from Image<TColor, TDepth> too
CvInvoke.EqualizeHist( inGray, betterGray); // would enhance images with low light
只需检查您的图像有多少个通道并检查每个通道。
于 2017-02-21T23:49:16.630 回答