Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def screenshot(self, file_path=None):
if file_path:
self.save_screenshot(file_path)
else:
file_path = os.path.join(ST.LOG_DIR, "temp.jpg")
self.save_screenshot(file_path)
screen = aircv.imread(file_path)
return screen
# save last res for portrait
if self.orientation in [LANDSCAPE, LANDSCAPE_RIGHT]:
self._size['height'] = w
self._size['width'] = h
else:
self._size['height'] = h
self._size['width'] = w
winw, winh = self.window_size()
self._touch_factor = float(winh) / float(h)
# save as file if needed
if filename:
aircv.imwrite(filename, screen)
return screen
Save screenshot to file
Args:
screen: screenshot to be saved
Returns:
None
"""
if not ST.LOG_DIR:
return
if screen is None:
screen = G.DEVICE.snapshot()
filename = "%(time)d.jpg" % {'time': time.time() * 1000}
filepath = os.path.join(ST.LOG_DIR, filename)
aircv.imwrite(filepath, screen)
return filename
Save screenshot to file
Args:
screen: screenshot to be saved
Returns:
None
"""
if not ST.LOG_DIR:
return
if screen is None:
screen = G.DEVICE.snapshot()
filename = "%(time)d.jpg" % {'time': time.time() * 1000}
filepath = os.path.join(ST.LOG_DIR, filename)
aircv.imwrite(filepath, screen)
return filename
Returns:
display the screenshot
"""
if self.handle:
screen = screenshot(filename, self.handle)
else:
screen = screenshot(filename)
if self.app:
rect = self.get_rect()
screen = aircv.crop_image(screen, [rect.left, rect.top, rect.right, rect.bottom])
if not screen.any():
if self.app:
rect = self.get_rect()
screen = aircv.crop_image(screenshot(filename), [rect.left, rect.top, rect.right, rect.bottom])
if self._focus_rect != (0, 0, 0, 0):
height, width = screen.shape[:2]
rect = (self._focus_rect[0], self._focus_rect[1], width + self._focus_rect[2], height + self._focus_rect[3])
screen = aircv.crop_image(screen, rect)
if filename:
aircv.imwrite(filename, screen)
return screen
def _try_match(func, *args, **kwargs):
G.LOGGING.debug("try match with %s" % func.__name__)
try:
ret = func(*args, **kwargs).find_best_result()
except aircv.NoModuleError as err:
G.LOGGING.debug("'surf'/'sift'/'brief' is in opencv-contrib module. You can use 'tpl'/'kaze'/'brisk'/'akaze'/'orb' in CVSTRATEGY, or reinstall opencv with the contrib module.")
return None
except aircv.BaseError as err:
G.LOGGING.debug(repr(err))
return None
else:
return ret
def _find_keypoint_result_in_predict_area(self, func, image, screen):
if not self.record_pos:
return None
# calc predict area in screen
image_wh, screen_resolution = aircv.get_resolution(image), aircv.get_resolution(screen)
xmin, ymin, xmax, ymax = Predictor.get_predict_area(self.record_pos, image_wh, self.resolution, screen_resolution)
# crop predict image from screen
predict_area = aircv.crop_image(screen, (xmin, ymin, xmax, ymax))
if not predict_area.any():
return None
# keypoint matching in predicted area:
ret_in_area = func(image, predict_area, threshold=self.threshold, rgb=self.rgb)
# calc cv ret if found
if not ret_in_area:
return None
ret = deepcopy(ret_in_area)
if "rectangle" in ret:
for idx, item in enumerate(ret["rectangle"]):
ret["rectangle"][idx] = (item[0] + xmin, item[1] + ymin)
ret["result"] = (ret_in_area["result"][0] + xmin, ret_in_area["result"][1] + ymin)
return ret
def _try_match(func, *args, **kwargs):
G.LOGGING.debug("try match with %s" % func.__name__)
try:
ret = func(*args, **kwargs).find_best_result()
except aircv.NoModuleError as err:
G.LOGGING.debug("'surf'/'sift'/'brief' is in opencv-contrib module. You can use 'tpl'/'kaze'/'brisk'/'akaze'/'orb' in CVSTRATEGY, or reinstall opencv with the contrib module.")
return None
except aircv.BaseError as err:
G.LOGGING.debug(repr(err))
return None
else:
return ret
def Record(self, bbox):
import time
import airtest.core.win.screen as screen
threading.current_thread.name = 'recording'
while True:
if not self.m_bRecording:
break
self.m_Lock.acquire()
print('Recording...', (bbox[2] - bbox[0], bbox[3] - bbox[1]))
try:
im = aircv.crop_image(screen.screenshot(None), bbox)
self.video.write(numpy.array(im)) # 将img convert ndarray
except:
pass
self.m_Lock.release()
time.sleep(INTERVAL)