检查层数, 启用函数check_layer :param ocr_target: :param roi: :return:
(ocr_target: RuleOcr, roi=None)
| 158 | return None |
| 159 | |
| 160 | def confirm_layer(ocr_target: RuleOcr, roi=None) -> int or None: |
| 161 | """ |
| 162 | 检查层数, 启用函数check_layer |
| 163 | :param ocr_target: |
| 164 | :param roi: |
| 165 | :return: |
| 166 | """ |
| 167 | ocr_target.roi[0] = int(roi[0]) - 118 |
| 168 | ocr_target.roi[1] = int(roi[1]) + 37 |
| 169 | # print(f'检测到的未通过ROI: {roi}') |
| 170 | # print(f'检测到的勾玉数量ROI: {ocr_target.roi}') |
| 171 | jade_num = ocr_target.ocr(self.device.image) |
| 172 | if isinstance(jade_num, str): |
| 173 | logger.warning(f'OCR failed, try again {jade_num}') |
| 174 | return None |
| 175 | elif not isinstance(jade_num, int): |
| 176 | logger.warning(f'OCR failed, try again {jade_num}') |
| 177 | return None |
| 178 | if jade_num < 7: |
| 179 | # 第一个的时候可能是没有检测到 |
| 180 | gold_number = self.O_SE_GOLD.ocr(self.device.image) |
| 181 | if isinstance(gold_number, int) and (gold_number == 10000 or gold_number == 18000): |
| 182 | logger.info(f'No find jade number, but find gold number {gold_number}') |
| 183 | return 1 |
| 184 | return None |
| 185 | elif jade_num > 70: |
| 186 | logger.warning(f'OCR failed, try again {jade_num}') |
| 187 | return None |
| 188 | # 勾玉数量 = 层数 * 7 |
| 189 | try: |
| 190 | lr = jade_num // 7 |
| 191 | return lr |
| 192 | except TypeError: |
| 193 | logger.warning(f'OCR failed, try again {jade_num}') |
| 194 | return None |
| 195 | |
| 196 | |
| 197 | if screenshot: |