首页 > 解决方案 > 如何自动查找照片中细节的坐标 - openCV

问题描述

我有一堆图片(附在下面)。我在每个图像中都有一个标志,我想使用 openCV 提取标志。但是,我不知道如何做到这一点,我也没有任何代码。有没有人有任何大致的想法来分别拍摄这些图像中的每一个并自动删除标志,并对其进行概括,以防我添加更多类似于下面给出的示例图像的图像。

示例 1

示例 2

示例 3

示例 4

标志图像示例:

标志图像示例

标签: pythonopencv

解决方案


这是一个可行的解决方案。

限制: 此解决方案假定符号始终包含数字。如果不是这种情况,这可能不起作用。

gpu如果标志不可用,则将其设置为 false。

import cv2
from easyocr import Reader

image = cv2.imread("./image/path/image.jpg")

languages = ['en']
reader = Reader(languages, gpu = True)
results = reader.readtext(image)

def cleanup_text(text):
    return "".join([c if ord(c) < 128 else "" for c in text]).strip()

for (bbox, text, prob) in results:

        text = cleanup_text(text)

        if text.isnumeric():
                print(bbox)
                (tl, tr, br, bl) = bbox
                tl = (int(tl[0]), int(tl[1]))
                tr = (int(tr[0]), int(tr[1]))
                br = (int(br[0]), int(br[1]))
                bl = (int(bl[0]), int(bl[1]))
                
                cv2.rectangle(image, tl, br, (0, 255, 0), 2)
                cv2.putText(image, text, (tl[0], tl[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2)

cv2.imshow("Sign", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出:

Credit: 显示边界框和清除文本的代码来自此博客


推荐阅读