我使用下面的python代码来使用检测车牌。
response = client.annotate_image({
'image': {'source': {'image_uri': uri}},
'features': [
{'max_results': 1000, 'type_': vision.Feature.Type.TEXT_DETECTION},
{'max_results': 1000, 'type_': vision.Feature.Type.OBJECT_LOCALIZATION},
],
})
lo_annotations = response.localized_object_annotations
for obj in lo_annotations:
print('\n{} (confidence: {})'.format(obj.name, obj.score))
print('Normalized bounding polygon vertices: ')
for vertex in obj.bounding_poly.normalized_vertices:
print(' - ({}, {})'.format(vertex.x, vertex.y))如果我使用的图像显示更多的汽车,建筑物,人员等,我会得到大约4-7个物体的识别。识别对象是场景中较大的物体,如“车”、“车”、“建筑物”、“建筑物”、“人”。
如果我从这张图像中剪出一辆车,然后用这个新图像进行物体定位,我就会得到像“汽车”、“轮胎”、“轮胎”、“车牌”这样完美的物体--因为车牌会被重新识别并列出。
因此,目标定位算法似乎从图像中提取出一些突出的对象,忽略了较小或较小的突出对象。
但在我的例子中,我需要定位图像中的所有车牌。有没有办法让使用的模型列出所有的车牌在图像或更多的对象,而不仅仅是最突出的对象?
否则,怎样才是正确的方法来把所有的车牌从一个图像-我必须训练一个定制的模型吗?
发布于 2021-12-07 03:53:09
Vision API是Google提供的一种经过预先训练的图像检测服务,它可以执行基本的图像检测,如检测文本、对象等,因此,您已经提到了API的观察,它通常检测图像中的突出对象。
我可以建议的是,如果你的图像中的物体通常出现在图像中的特定区域(例如。对象出现在下半部分),在使用Vision检测车牌之前,可以使用python库,如PIL和OpenCV对图像进行预处理。或者检测对象,获取每个对象的坐标,使用坐标作为裁剪特定对象的输入,然后使用Vision检测车牌。
此外,正如您已经提到的,作为一种替代方法,如果您对Vision的结果不满意,您可以创建一个自定义模型来检测车牌。使用自定义模型,您可以更自由地调整模型以提高检测车牌的准确性。
https://stackoverflow.com/questions/70251186
复制相似问题