2022-12-30 16:17

Python通过OpenCV和CnOcr识别有复杂背景的文本

码自答

Python

(922)

(0)

收藏

       通过OpenCV区分图片和背景,获取图片上有文本的区域,通过CnOcr识别相应区域中的文本

  • 通过OpenCV打开图片文件

    image = cv2.imread("d:/text/3.jpg");

    image.png

  • 灰度处理,OpenCV只识别灰度图片

    gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY);

    image.pngimage.png

  • 二值处理

    只有黑白两种颜色,原来黑色,变成白色,其他都为给色

    threshold = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)[1];

    image.png

  • 中值滤波

    减少噪点,某点用邻近区域中的中间值代替

    blur = cv2.medianBlur(threshold,5);

    image.png

  • 极度膨胀

    边缘加粗

    dilate = cv2.dilate(blur,iterations=6);

    image.png

  • 轮廓检测

    检测内容的轮廓

    binary,contours,hierarchy = cv2.findContours(dilate,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE);

    contours是检测到的轮廓

    image.png

  • 获取第一点的坐标,并识别中间的内容

    position = positions[0];

    data_area = data_areas[f"{position[0]}-{position[1]}"]#根据坐标获得区域

    data = ocr.ocr(data_area)#识别区域内容


0条评论

点击登录参与评论