admin
2024-12-16 ec012b7d2b915db24cd8b23f723bf18dfe75b7d6
utils/ths_ocr_util.py
@@ -18,7 +18,11 @@
    识别同花顺代码
    :return:
    """
    hwnd = ths_util.get_ths_main_content_hwnd()
    start_time = time.time()
    time_use_list = []
    hwnd = ths_util.get_ths_main_content_hwnd_cached()
    time_use_list.append(("获取句柄", time.time() - start_time))
    start_time = time.time()
    if not hwnd:
        raise Exception("看盘页面句柄未获取到")
    # 句柄截图
@@ -27,26 +31,38 @@
    # 格式为:(上边距,宽度,高度,缩放倍数)
    rect_ = setting.get_ths_auto_code_rect()
    time_use_list.append(("获取配置参数", time.time() - start_time))
    start_time = time.time()
    # 测试
    # if len(rect_) > 3:
    #     scale = rect_[3]
    width = int((rect[2] - rect[0]) * scale)
    left = width - rect_[1]
    img = win32_util.window_capture(hwnd, (left, rect_[0], width - 1, rect_[0] + rect_[2]), scale, always_save)
    if int(time.time()) % 5 == 0:
        cv2.imwrite(f"test2.png", opencv_util.gray_img(img))
    if always_save:
        cv2.imwrite(f"test22.png", opencv_util.gray_img(img))
    time_use_list.append(("截图", time.time() - start_time))
    start_time = time.time()
    if always_save:
        cv2.imwrite(f"test_clip_gray.png", opencv_util.gray_img(img))
    clip_img, details = opencv_util.clip_ths_code_area(img)
    if always_save:
        cv2.imwrite(f"test_clip_gray_clip.png", clip_img)
    time_use_list.append(("分割", time.time() - start_time))
    start_time = time.time()
    code = ocr_util.recognize_code(clip_img)
    use_time = round((time.time() - start_time) * 1000)
    time_use_list.append(("识别", time.time() - start_time))
    start_time = time.time()
    if code is None:
        code = ocr_util.recognize_code(img)
        time_use_list.append(("再次识别", time.time() - start_time))
        start_time = time.time()
    if code != last_ocr_code[0]:
        print("保存图片", code)
        debug_logger.info(f"代码识别结果:{code} 识别时间:{use_time}ms")
        msg = " ".join( [f"{x[0]}:{int(x[1]*1000)}ms" for x in time_use_list])
        debug_logger.info(f"代码识别结果:{code} {msg}")
        last_ocr_code[0] = code
        cv2.imwrite(f"datas/test/{code}.png", opencv_util.gray_img(img))
        if always_save:
            cv2.imwrite(f"datas/test/{code}.png", opencv_util.gray_img(img))
    return code