我一直在图像数据集中处理文本识别。我想使用组件分割图像的字符并找到阈值图像的轮廓。但是,许多字符彼此合并并与图像中的其他组件合并。
你能给我一些分离它们的想法吗?谢谢您的帮助!
以下是一些示例,以及我的部分代码:
Mat placa_contornos = processContourns(img_placa_adaptativeTreshold_mean);
vector<vector<Point>> contours_placa;
findContours(placa_contornos,
contours_placa,
CV_RETR_EXTERNAL, externos)
CV_CHAIN_APPROX_NONE);
vector<vector<Point> >::iterator itc = contours_placa.begin();
while (itc != contours_placa.end()) {
//Create bounding rect of object
Rect mr = boundingRect(Mat(*itc));
rectangle(imagem_placa_cor, mr, Scalar(0, 255, 0));
++itc;
}
imshow("placa con rectangles", imagem_placa_cor);
答案 0 :(得分:0)
我会尝试更多地侵蚀二进制图像,看看是否有帮助。您可能还想尝试修复倾斜,然后删除连接字母的底线
此外,这可能是相关的:Recognize the characters of license plate
答案 1 :(得分:0)
您可以在阈值图像上尝试opening operation以消除噪音。您可以根据需要调整内核大小。
// Get a rectangular kernel with size 7
Mat element = getStructuringElement(0, Size(7, 7), Point(1, 1));
// Apply the morphology operation
morphologyEx(placa_contornos, result, CV_MORPH_OPEN, element);
它在您的阈值图像上提供以下中间输出,我想这会改善您的检测。