How to use _get_area_scope method in Airtest

Best Python code snippet using Airtest

multiscale_template_matching.py

Source:multiscale_template_matching.py Github

copy

Full Screen

...139 if self.resolution[0]<self.im_search.shape[1] or self.resolution[1]<self.im_search.shape[0]:140 raise TemplateInputError("error: resolution is too small.")141 # 第二步:计算模板匹配的结果矩阵res142 if not self.record_pos is None:143 area, self.resolution = self._get_area_scope(self.im_source, self.im_search, self.record_pos, self.resolution)144 self.im_source = aircv.crop_image(self.im_source, area)145 check_source_larger_than_search(self.im_source, self.im_search)146 r_min, r_max = self._get_ratio_scope(147 self.im_source, self.im_search, self.resolution)148 s_gray, i_gray = img_mat_rgb_2_gray(self.im_search), img_mat_rgb_2_gray(self.im_source)149 confidence, max_loc, w, h, _ = self.multi_scale_search(150 i_gray, s_gray, ratio_min=r_min, ratio_max=r_max, step=self.scale_step, threshold=self.threshold)151 if not self.record_pos is None:152 max_loc = (max_loc[0] + area[0], max_loc[1] + area[1])153 154 # 求取识别位置: 目标中心 + 目标区域:155 middle_point, rectangle = self._get_target_rectangle(max_loc, w, h)156 best_match = generate_result(middle_point, rectangle, confidence)157 LOGGING.debug("[%s] threshold=%s, result=%s" %158 (self.METHOD_NAME, self.threshold, best_match))159 return best_match if confidence >= self.threshold else None160 else:161 return None162 def _get_ratio_scope(self, src, templ, resolution):163 """预测缩放比的上下限."""164 H, W = src.shape[0], src.shape[1]165 th, tw = templ.shape[0], templ.shape[1]166 w, h = resolution167 rmin = min(H/h, W/w) # 新旧模板比下限168 rmax = max(H/h, W/w) # 新旧模板比上限169 ratio = max(th/H, tw/W) # 小图大图比170 r_min = ratio*rmin171 r_max = ratio*rmax172 return max(r_min, self.scale_step), min(r_max, 0.99)173 def get_predict_point(self, record_pos, screen_resolution):174 """预测缩放后的点击位置点."""175 delta_x, delta_y = record_pos176 _w, _h = screen_resolution177 target_x = delta_x * _w + _w * 0.5178 target_y = delta_y * _w + _h * 0.5179 return target_x, target_y180 def _get_area_scope(self, src, templ, record_pos, resolution):181 """预测搜索区域."""182 H, W = src.shape[0], src.shape[1]183 th, tw = templ.shape[0], templ.shape[1]184 w, h = resolution185 x, y = self.get_predict_point(record_pos, (W, H))186 predict_x_radius = max(int(tw * W / (w)), self.DEVIATION)187 predict_y_radius = max(int(th * H / (h)), self.DEVIATION)188 area = (189 max(x - predict_x_radius, 0),190 max(y - predict_y_radius, 0),191 min(x + predict_x_radius, W), 192 min(y + predict_y_radius, H),193 )194 return area, (w*(area[3]-area[1])/W, h*(area[2]-area[0])/H)

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Airtest automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful