def check_object_count(self, row1, row2, row3): row1_count_diff = ImageHelper.check_row_count(row1[0], row1[1], row1[2]) row2_count_diff = ImageHelper.check_row_count(row2[0], row2[1], row2[2]) if row1_count_diff == row2_count_diff and row1_count_diff != -1: possible_options = {} for index, (option, optionImage, binary_image) in \ self.options.iteritems(): row3_count_diff = ImageHelper.check_row_count(row3[0], row3[1], binary_image) if row3_count_diff == row1_count_diff: possible_options[index] = ImageHelper.get_pixel_count(binary_image) if len(possible_options) == 1: return possible_options[0] elif len(possible_options) > 1: row3_pixel_count = ImageHelper.get_pixel_count(row3[0]) best_pixel_count_score = None best_pixel_count_index = -1 for index, pixel_count in possible_options.iteritems(): difference = abs(pixel_count - row3_pixel_count) similarity = 1 - (float(difference) / row3_pixel_count) if not best_pixel_count_score or similarity > best_pixel_count_score: best_pixel_count_score = similarity best_pixel_count_index = index if best_pixel_count_score >= ImageHelper.LOW_SIMILARITY_THRESHOLD: return int(best_pixel_count_index) return -1
def check_object_count(self, row1, row2, row3): row1_count_diff = ImageHelper.check_row_count(row1[0], row1[1], row1[2]) row2_count_diff = ImageHelper.check_row_count(row2[0], row2[1], row2[2]) if row1_count_diff == row2_count_diff and row1_count_diff != -1: possible_options = {} for index, (option, optionImage, binary_image) in \ self.options.iteritems(): row3_count_diff = ImageHelper.check_row_count( row3[0], row3[1], binary_image) if row3_count_diff == row1_count_diff: possible_options[index] = ImageHelper.get_pixel_count( binary_image) if len(possible_options) == 1: return possible_options[0] elif len(possible_options) > 1: row3_pixel_count = ImageHelper.get_pixel_count(row3[0]) best_pixel_count_score = None best_pixel_count_index = -1 for index, pixel_count in possible_options.iteritems(): difference = abs(pixel_count - row3_pixel_count) similarity = 1 - (float(difference) / row3_pixel_count) if not best_pixel_count_score or similarity > best_pixel_count_score: best_pixel_count_score = similarity best_pixel_count_index = index if best_pixel_count_score >= ImageHelper.LOW_SIMILARITY_THRESHOLD: return int(best_pixel_count_index) return -1
def check_top_bottom(self, row1, row2, row3): if ImageHelper.check_top_bottom_row(row1[0], row1[1], row1[2]) and ImageHelper.check_top_bottom_row(row2[0], row2[1], row2[2]): best_top_bottom_score = None best_top_bottom_index = -1 top_bottom_matrix = ImageHelper.get_top_bottom(row3[0], row3[1]) for index, (option, optionImage, binary_image) in \ self.options.iteritems(): option_score = ImageHelper.get_similarity_ratio(binary_image, top_bottom_matrix) if not best_top_bottom_score or option_score > best_top_bottom_score: best_top_bottom_score = option_score best_top_bottom_index = index if best_top_bottom_score >= ImageHelper.LOW_SIMILARITY_THRESHOLD: return int(best_top_bottom_index) return -1
def check_increasing_black_pixels_rxc(self, image1, image2, image3, image4): if (ImageHelper.verify_increasing_black_pixels(image1, image2) and ImageHelper.verify_increasing_black_pixels(image3, image4)): options = [] black_pixel_sum2 = numpy.sum(image2) black_pixel_sum4 = numpy.sum(image4) for index, (option, optionImage, binary_image) in \ self.options.iteritems(): black_pixel_sum = numpy.sum(binary_image) if black_pixel_sum < black_pixel_sum2 and \ black_pixel_sum < black_pixel_sum4: options.append(index) if len(options) == 1: return int(options[0]) return -1
def check_row_or(self, row1, row2, row3): if ImageHelper.check_or(row1[0], row1[1], row1[2]) or ImageHelper.check_or(row2[0], row2[1], row2[2]): # Find best option for row3 best_or_score = None best_or_index = -1 or_matrix = ImageHelper.get_or(row3[0], row3[1]) for index, (option, optionImage, binary_image) in \ self.options.iteritems(): option_score = ImageHelper.get_similarity_ratio(binary_image, or_matrix) if not best_or_score or option_score > best_or_score: best_or_score = option_score best_or_index = index if best_or_score >= ImageHelper.LOW_SIMILARITY_THRESHOLD: return int(best_or_index) return -1
def check_pixel_ratio3x3_diag(self, image1, image2): pixel_ratio12 = ImageHelper.get_pixel_ratio(image1, image2) best_pixel_score_diff = None best_pixel_index = -1 for index, (option, optionImage, binary_image) in \ self.options.iteritems(): pixel_ratio_diag = ImageHelper.get_pixel_ratio(image2, binary_image) pixel_ratio_similarity = \ float(min(pixel_ratio_diag, pixel_ratio12)) / \ max(pixel_ratio12, pixel_ratio_diag) # Pixel ratio should be as close to 1 as possible if not best_pixel_score_diff or pixel_ratio_similarity > best_pixel_score_diff: best_pixel_score_diff = pixel_ratio_similarity best_pixel_index = index return int(best_pixel_index)
def check_pixel_ratio3x3_diag(self, image1, image2): pixel_ratio12 = ImageHelper.get_pixel_ratio(image1, image2) best_pixel_score_diff = None best_pixel_index = -1 for index, (option, optionImage, binary_image) in \ self.options.iteritems(): pixel_ratio_diag = ImageHelper.get_pixel_ratio( image2, binary_image) pixel_ratio_similarity = \ float(min(pixel_ratio_diag, pixel_ratio12)) / \ max(pixel_ratio12, pixel_ratio_diag) # Pixel ratio should be as close to 1 as possible if not best_pixel_score_diff or pixel_ratio_similarity > best_pixel_score_diff: best_pixel_score_diff = pixel_ratio_similarity best_pixel_index = index return int(best_pixel_index)
def get_trasi_score(image): img_bytes = ImgHelper.img_to_bytearray(image) response = send_img_bytearray(img_bytes) if (response.status_code == 200): return response_scores_toJSON(response) else: print('Error - HTTPStatusCode', response.status_code)
def __init__(self, parent): UIWndBase.__init__(self, GameData.BATTLEGROUND_AREA, parent) self.surface = GameData.TOPSCREEN_SURF #直接画到屏幕surface, 不经过顶级窗口(优化) self.entire_surface = self.surface #游戏世界全局surface. 设置战场后更新为地图大小 self.viewport = GameData.BATTLEGROUND_AREA #视口Rect self.viewport_speed = 20 #滚屏速度(每帧象素) self.screen_moving = 'x' #滚屏状态. #必须在外部调用set_battle完成初始化 self.battle = None #战场对象.类型Battle self.map = None #地图对象 self.entire_surface = None #mouse status self.ms_leftdown = False self.selected_rect = None #框选的矩形 self.selecting_loc = False #鼠标正在选择建造地点 self.active_selected = None self.building_mask = None #建筑选择地点时的mask self.mask_size = (0,0) self.mask_conflict = False #建筑与其他单位相交 #环境对象 imgs = ImageHelper.load_imagelist('gather_flag.png') self.sp_gatherpoint = EnvironObject(imgs) self.envir_objects = EnvObjectGroup() self.envir_objects.add(self.sp_gatherpoint) self.gather_point = (0,0) self.show_gather_point = False
def check_pixel_difference(self, row1, row2, row3): if ImageHelper.check_pixel_difference(row1[0], row1[1], row1[2]) and ImageHelper.check_pixel_difference(row2[0], row2[1], row2[2]): best_pixel_diff_score = None best_pixel_diff_index = -1 pixel_diff = ImageHelper.get_pixel_difference(row3[0], row3[1]) for index, (option, optionImage, binary_image) in \ self.options.iteritems(): option_pixels = (binary_image.shape[0] * binary_image.shape[1]) - numpy.sum(binary_image) smaller, bigger = (pixel_diff, option_pixels) if option_pixels > pixel_diff else (option_pixels, pixel_diff) option_score = 1 - (float(bigger - smaller) / bigger) if not best_pixel_diff_score or option_score >= best_pixel_diff_score: best_pixel_diff_score = option_score best_pixel_diff_index = index if best_pixel_diff_score >= ImageHelper.LOW_SIMILARITY_THRESHOLD: return int(best_pixel_diff_index) return -1
def test_05_MyPersonalPage(self): time.sleep(5) driver.press_keycode(4) driver.find_elements_by_id("com.A17zuoye.mobile.homework:id/primary_rel")[3].click() time.sleep(5) driver.get_screenshot_as_file( os.path.join('.', 'student_Screenshot', sys._getframe().f_code.co_name[:7] + '.png')) res = ImageHelper.getOverDraw('.\\student_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png')
def check_xor(self, row1, row2, row3): if ImageHelper.check_xor(row1[0], row1[1], row1[2]) and ImageHelper.check_xor( row2[0], row2[1], row2[2]): best_xor_score = None best_xor_index = -1 xor_matrix = ImageHelper.get_xor(row3[0], row3[1]) for index, (option, optionImage, binary_image) in \ self.options.iteritems(): option_score = ImageHelper.get_similarity_ratio( binary_image, xor_matrix) if not best_xor_score or option_score > best_xor_score: best_xor_score = option_score best_xor_index = index if best_xor_score >= ImageHelper.LOW_SIMILARITY_THRESHOLD: return int(best_xor_index) return -1
def create_image_with_color_prop(width=64, height=64, prop_red=33, prop_green=34, prop_blue=33): return ImgHelper.create_img_from_bytearray( create_bytearray_with_color_prop(width, height, prop_red, prop_green, prop_blue), 'RGBA')
def store_inputs(self, problem): for name, figure in problem.figures.iteritems(): figure_image = Image.open(figure.visualFilename).convert("L") binary_image = ImageHelper.get_binary_image(figure_image) if name.isdigit(): self.options[name] = (figure, figure_image, binary_image) else: self.input_figures[name] = (figure, figure_image, binary_image)
def check_3_way_xor(self, row1, row2, row3): row1_result = ImageHelper.get_3_way_xor(row1) row2_result = ImageHelper.get_3_way_xor(row2) if ImageHelper.get_similarity_ratio(row1_result, row2_result) > ImageHelper.HIGH_SIMILARITY_THRESHOLD: best_3_way_xor_score = None best_3_way_xor_index = -1 for index, (option, optionImage, binary_image) in \ self.options.iteritems(): row3_result = ImageHelper.get_3_way_xor(row3 + [binary_image]) option_score = ImageHelper.get_similarity_ratio(row3_result, row2_result) if not best_3_way_xor_score or option_score > best_3_way_xor_score: best_3_way_xor_score = option_score best_3_way_xor_index = index if best_3_way_xor_score >= ImageHelper.LOW_SIMILARITY_THRESHOLD: return int(best_3_way_xor_index) return -1
def test_04_InfoCenter(self): time.sleep(20) driver.press_keycode(4) driver.find_element_by_id("com.A17zuoye.mobile.homework:id/primary_student_message_btn").click() time.sleep(5) driver.get_screenshot_as_file( os.path.join('.', 'student_Screenshot', sys._getframe().f_code.co_name[:7] + '.png')) res = ImageHelper.getOverDraw('.\\student_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') assert res <= TolerableValue, 'Maybe OverDraw,Please check the options with OverDraw Value:' + str(res)
def test_01_FirstPage(self): driver.implicitly_wait(20) driver.get_screenshot_as_file( os.path.join('.', 'parent_Screenshot', sys._getframe().f_code.co_name[:7] + '.png')) res = ImageHelper.getOverDraw('.\\parent_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') assert res <= TolerableValue, 'Maybe OverDraw,Please check the options with OverDraw Value:' + str( res)
def check_translation(self, image1, image2, image3, image4, image5): axis1 = ImageHelper.get_translation_axis(image1, image2) axis2 = ImageHelper.get_translation_axis(image3, image4) if axis1 and axis1 == axis2: best_translation_score = None best_translation_index = -1 for index, (option, optionImage, binary_image) in \ self.options.iteritems(): translated_option = ImageHelper.get_translation(binary_image, axis1) translated_score = ImageHelper.get_similarity_ratio( image5, translated_option) if not best_translation_score or translated_score > \ best_translation_score: best_translation_score = translated_score best_translation_index = index if best_translation_score >= ImageHelper.TRANSLATION_THRESHOLD: return int(best_translation_index) return -1
def check_translation(self, image1, image2, image3, image4, image5): axis1 = ImageHelper.get_translation_axis(image1, image2) axis2 = ImageHelper.get_translation_axis(image3, image4) if axis1 and axis1 == axis2: best_translation_score = None best_translation_index = -1 for index, (option, optionImage, binary_image) in \ self.options.iteritems(): translated_option = ImageHelper.get_translation( binary_image, axis1) translated_score = ImageHelper.get_similarity_ratio( image5, translated_option) if not best_translation_score or translated_score > \ best_translation_score: best_translation_score = translated_score best_translation_index = index if best_translation_score >= ImageHelper.TRANSLATION_THRESHOLD: return int(best_translation_index) return -1
def check_rotation(self, image1, image2, image3): """ Verifies whether image1:image2 are rotations or not. If so, returns image in options that is a similar rotation of image3. Else returns -1 """ angle = ImageHelper.get_rotation_degrees(image1, image2) if angle >= 0: max_option_index = None max_option_score = 0 for index, (option, optionImage, binary_image) in \ self.options.iteritems(): option_score = ImageHelper.rotate_and_score( angle, image3, binary_image) if not max_option_score or option_score > max_option_score: max_option_index = index max_option_score = option_score if max_option_score > ImageHelper.HIGH_SIMILARITY_THRESHOLD: return int(max_option_index) return -1
def test_01_WelcomePage(self): # 1-欢迎界面 driver.implicitly_wait(10) driver.get_screenshot_as_file('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') res = ImageHelper.getOverDraw('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') assert res <= TolerableValue, 'Maybe OverDraw,Please check the options with OverDraw Value:' + str( res)
def check_unchanged2x2(self, image1, image2, image3): """ Verifies whether image1:image2 are similar or not. If so, returns image in options that is most similar to image3. Else returns -1 """ if ImageHelper.get_similarity_ratio( image1, image2) > ImageHelper.HIGH_SIMILARITY_THRESHOLD: max_option_index = None max_option_score = 0 for index, (option, optionImage, binary_image) in \ self.options.iteritems(): option_score = ImageHelper.get_similarity_ratio( image3, binary_image) if not max_option_score or option_score > max_option_score: max_option_index = index max_option_score = option_score if max_option_score > ImageHelper.HIGH_SIMILARITY_THRESHOLD: return int(max_option_index) return -1
def check_3_way_xor(self, row1, row2, row3): row1_result = ImageHelper.get_3_way_xor(row1) row2_result = ImageHelper.get_3_way_xor(row2) if ImageHelper.get_similarity_ratio( row1_result, row2_result) > ImageHelper.HIGH_SIMILARITY_THRESHOLD: best_3_way_xor_score = None best_3_way_xor_index = -1 for index, (option, optionImage, binary_image) in \ self.options.iteritems(): row3_result = ImageHelper.get_3_way_xor(row3 + [binary_image]) option_score = ImageHelper.get_similarity_ratio( row3_result, row2_result) if not best_3_way_xor_score or option_score > best_3_way_xor_score: best_3_way_xor_score = option_score best_3_way_xor_index = index if best_3_way_xor_score >= ImageHelper.LOW_SIMILARITY_THRESHOLD: return int(best_3_way_xor_index) return -1
def check_pixel_ratio3x3_rxc(self, image1, image2, image3, image4): pixel_ratio12 = ImageHelper.get_pixel_ratio(image1, image2) pixel_ratio34 = ImageHelper.get_pixel_ratio(image3, image4) pixel_ratio_similarity = \ float(min(pixel_ratio12, pixel_ratio34)) / max( pixel_ratio12, pixel_ratio34) if pixel_ratio_similarity > ImageHelper.PIXEL_RATIO_THRESHOLD: # number of pixels increase consistently best_pixel_score = None best_pixel_index = -1 for index, (option, optionImage, binary_image) in \ self.options.iteritems(): pixel_ratio5 = ImageHelper.get_pixel_ratio(image4, binary_image) pixel_ratio_score = float(min(pixel_ratio5, pixel_ratio12)) / \ max(pixel_ratio12, pixel_ratio5) if not best_pixel_score or pixel_ratio_score > best_pixel_score: best_pixel_score = pixel_ratio_score best_pixel_index = index if best_pixel_score > ImageHelper.PIXEL_RATIO_THRESHOLD: return int(best_pixel_index) return -1
def check_unchanged2x2(self, image1, image2, image3): """ Verifies whether image1:image2 are similar or not. If so, returns image in options that is most similar to image3. Else returns -1 """ if ImageHelper.get_similarity_ratio( image1, image2) > ImageHelper.HIGH_SIMILARITY_THRESHOLD: max_option_index = None max_option_score = 0 for index, (option, optionImage, binary_image) in \ self.options.iteritems(): option_score = ImageHelper.get_similarity_ratio( image3, binary_image ) if not max_option_score or option_score > max_option_score: max_option_index = index max_option_score = option_score if max_option_score > ImageHelper.HIGH_SIMILARITY_THRESHOLD: return int(max_option_index) return -1
def test_04_AssignHomework(self): # 4-布置作业 driver.find_element_by_id( "com.yiqizuoye.teacher:id/teacher_set_homework_btn").click() time.sleep(5) driver.get_screenshot_as_file('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') res = ImageHelper.getOverDraw('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') assert res <= TolerableValue, 'Maybe OverDraw,Please check the options with OverDraw Value:' + str( res)
def check_pixel_ratio3x3_rxc(self, image1, image2, image3, image4): pixel_ratio12 = ImageHelper.get_pixel_ratio(image1, image2) pixel_ratio34 = ImageHelper.get_pixel_ratio(image3, image4) pixel_ratio_similarity = \ float(min(pixel_ratio12, pixel_ratio34)) / max( pixel_ratio12, pixel_ratio34) if pixel_ratio_similarity > ImageHelper.PIXEL_RATIO_THRESHOLD: # number of pixels increase consistently best_pixel_score = None best_pixel_index = -1 for index, (option, optionImage, binary_image) in \ self.options.iteritems(): pixel_ratio5 = ImageHelper.get_pixel_ratio( image4, binary_image) pixel_ratio_score = float(min(pixel_ratio5, pixel_ratio12)) / \ max(pixel_ratio12, pixel_ratio5) if not best_pixel_score or pixel_ratio_score > best_pixel_score: best_pixel_score = pixel_ratio_score best_pixel_index = index if best_pixel_score > ImageHelper.PIXEL_RATIO_THRESHOLD: return int(best_pixel_index) return -1
def check_subtraction(self, image1, image2, image3): """ Verifies whether image1:image2 are different by a constant difference or not. If so, returns image in options that is different from image3 by the same constant difference. Else returns -1 """ difference_a_b = ImageHelper.find_difference(image1, image2) max_subtraction_score = None max_subtraction_index = -1 for index, (option, optionImage, binary_image) in \ self.options.iteritems(): subtraction_score = ImageHelper.get_difference_score( difference_a_b, image3, binary_image) if not max_subtraction_score or subtraction_score > \ max_subtraction_score: max_subtraction_score = subtraction_score max_subtraction_index = index if max_subtraction_score > ImageHelper.LOW_SIMILARITY_THRESHOLD: return int(max_subtraction_index) return -1
def test_03_LogingStudent(self): driver.find_element_by_id("com.A17zuoye.mobile.homework:id/main_guid_login_btn").click() driver.find_element_by_id("com.A17zuoye.mobile.homework:id/main_login_edit_account").click() driver.find_element_by_id("com.A17zuoye.mobile.homework:id/main_login_edit_account").send_keys("11030000001") driver.find_element_by_id("com.A17zuoye.mobile.homework:id/main_login_edit_pwd").click() driver.find_element_by_id("com.A17zuoye.mobile.homework:id/main_login_edit_pwd").send_keys("123") driver.find_element_by_id("com.A17zuoye.mobile.homework:id/main_login_btn_login").click() time.sleep(15) driver.get_screenshot_as_file( os.path.join('.', 'student_Screenshot', sys._getframe().f_code.co_name[:7] + '.png')) res = ImageHelper.getOverDraw('.\\student_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png')
def test_04_MyProfile(self): driver.find_element_by_id( "com.yiqizuoye.jzt:id/activity_main_bottom_tab_user_img").click() driver.get_screenshot_as_file('.\\parent_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') res = ImageHelper.getOverDraw('.\\parent_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') print(driver.current_activity) time.sleep(3) assert res <= TolerableValue, 'Maybe OverDraw,Please check the options with OverDraw Value:' + str( res)
def check_pixel_difference(self, row1, row2, row3): if ImageHelper.check_pixel_difference( row1[0], row1[1], row1[2]) and ImageHelper.check_pixel_difference( row2[0], row2[1], row2[2]): best_pixel_diff_score = None best_pixel_diff_index = -1 pixel_diff = ImageHelper.get_pixel_difference(row3[0], row3[1]) for index, (option, optionImage, binary_image) in \ self.options.iteritems(): option_pixels = (binary_image.shape[0] * binary_image.shape[1] ) - numpy.sum(binary_image) smaller, bigger = ( pixel_diff, option_pixels) if option_pixels > pixel_diff else ( option_pixels, pixel_diff) option_score = 1 - (float(bigger - smaller) / bigger) if not best_pixel_diff_score or option_score >= best_pixel_diff_score: best_pixel_diff_score = option_score best_pixel_diff_index = index if best_pixel_diff_score >= ImageHelper.LOW_SIMILARITY_THRESHOLD: return int(best_pixel_diff_index) return -1
def test_03_LoginPage(self): driver.implicitly_wait(20) driver.find_element_by_id( "com.yiqizuoye.jzt:id/login_new_user_skip").click() driver.implicitly_wait(10) driver.get_screenshot_as_file('.\\parent_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') res = ImageHelper.getOverDraw('.\\parent_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') time.sleep(3) assert res <= TolerableValue, 'Maybe OverDraw,Please check the options with OverDraw Value:' + str( res)
def eliminate_options_in_question(self): possible_options = ['1', '2', '3', '4', '5', '6', '7', '8'] possible_inputs = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] for index, (option, optionImage, binary_image) in \ self.options.iteritems(): for letter in possible_inputs: if ImageHelper.get_similarity_ratio(binary_image, self.input_figures[letter][2]) > ImageHelper.HIGH_SIMILARITY_THRESHOLD: possible_options.remove(index) possible_inputs.remove(letter) break #if binary_image in self.input_figures: # possible_options.remove(index) if len(possible_options) == 1: return int(possible_options[0])
def test_02_LoginPage(self): # 2-登录界面 driver.implicitly_wait(10) time.sleep(5) driver.find_element_by_id( "com.yiqizuoye.teacher:id/teacher_guide_btn_login").click() driver.get_screenshot_as_file('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') res = ImageHelper.getOverDraw('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') assert res <= TolerableValue, 'Maybe OverDraw,Please check the options with OverDraw Value:' + str( res)
def test_09_options(self): driver.find_element_by_id( "com.yiqizuoye.teacher:id/teacher_common_header_left_button" ).click() time.sleep(2) driver.find_elements_by_id( "com.yiqizuoye.teacher:id/grid_item_layout")[3].click() driver.get_screenshot_as_file('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') res = ImageHelper.getOverDraw('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') assert res <= TolerableValue, 'Maybe OverDraw,Please check the options with OverDraw Value:' + str( res)
def test_07_EnterMyClass(self): # 7-我的班级 driver.find_element_by_id( "com.yiqizuoye.teacher:id/teacher_clazz_info_layout").click() driver.find_element_by_id( "com.yiqizuoye.teacher:id/tv_class_create").click() time.sleep(3) driver.get_screenshot_as_file('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') res = ImageHelper.getOverDraw('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') assert res <= TolerableValue, 'Maybe OverDraw,Please check the options with OverDraw Value:' + str( res)
def test_06_MyStatus(self): # 6-我的界面 driver.press_keycode(4) driver.find_element_by_id( "com.yiqizuoye.teacher:id/teacher_main_activity_bottom_tab_me" ).click() time.sleep(3) driver.get_screenshot_as_file('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') res = ImageHelper.getOverDraw('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') assert res <= TolerableValue, 'Maybe OverDraw,Please check the options with OverDraw Value:' + str( res)
def eliminate_options_in_question(self): possible_options = ['1', '2', '3', '4', '5', '6', '7', '8'] possible_inputs = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] for index, (option, optionImage, binary_image) in \ self.options.iteritems(): for letter in possible_inputs: if ImageHelper.get_similarity_ratio( binary_image, self.input_figures[letter] [2]) > ImageHelper.HIGH_SIMILARITY_THRESHOLD: possible_options.remove(index) possible_inputs.remove(letter) break #if binary_image in self.input_figures: # possible_options.remove(index) if len(possible_options) == 1: return int(possible_options[0])
def runAlgoForYear(year): data_map = im_helper.extractBandForYear(dataFolderDir, year) m, n, k = data_map.shape print m, n, k result = np.zeros((m, n), dtype=np.int) for x in range(m): for y in range(n): noData = False for z in range(k): if data_map[x, y, z] < -9000: noData = True break if noData: result[x, y] = -1 continue data_point = data_map[x][y].reshape(1, -1) result[x, y] = classifier.predict(data_point) Output.createTiff(result, 'SVM', str(year)) return result
def test_03_TeacherMainPage(self): # 3-输入用户名和密码 driver.find_elements_by_class_name( "android.widget.EditText")[0].click() driver.find_elements_by_class_name( "android.widget.EditText")[0].send_keys("10030000003") driver.find_elements_by_class_name( "android.widget.EditText")[1].click() driver.find_elements_by_class_name( "android.widget.EditText")[1].send_keys("123") driver.find_element_by_id( "com.yiqizuoye.teacher:id/teacher_login_btn_login").click() time.sleep(10) driver.get_screenshot_as_file('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') res = ImageHelper.getOverDraw('.\\teacher_Screenshot\\' + sys._getframe().f_code.co_name[:7] + '.png') assert res <= TolerableValue, 'Maybe OverDraw,Please check the options with OverDraw Value:' + str( res)
def send_ppm_image(img): parsedImg = ImgHelper.create_img_from_bytearray(img) img_bytes = ImgHelper.img_to_bytearray(parsedImg) response = send_img_bytearray(img_bytes) return response
def loadimages(): Tank.images = ImageHelper.load_imagelist('mtank_1_0.png', 'mtank_1_1.png', 'mtank_1_2.png', 'mtank_1_3.png', 'mtank_1_4.png', 'mtank_1_5.png', 'mtank_1_6.png', 'mtank_1_7.png')
def load_images(panel): panel.images = ImageHelper.load_imagelist('icon_tfac.png', 'icon_repair.png', 'icon_sell.png')
def loadimages(): HeadQuarter.images = ImageHelper.load_imagelist('head_quarter.png')
def solve2x2(self): # If A:B is unchanged, find the option that's the same as 'C' #print 'Checking for unchanged' unchanged_a_b_index = self.check_unchanged2x2( self.input_figures['A'][2], self.input_figures['B'][2], self.input_figures['C'][2]) if unchanged_a_b_index > AGENT_ANSWER_THRESHOLD: return unchanged_a_b_index unchanged_a_c_index = self.check_unchanged2x2( self.input_figures['A'][2], self.input_figures['C'][2], self.input_figures['B'][2]) if unchanged_a_b_index > AGENT_ANSWER_THRESHOLD: return unchanged_a_c_index #print 'Checking for reflection' # If A:B is a reflection, find the option that's the same reflection # of 'C' reflection_a_b_index = self.check_reflection( self.input_figures['A'][2], self.input_figures['B'][2], self.input_figures['C'][2] ) if reflection_a_b_index > AGENT_ANSWER_THRESHOLD: return reflection_a_b_index reflection_a_c_index = self.check_reflection( self.input_figures['A'][2], self.input_figures['C'][2], self.input_figures['B'][2] ) if reflection_a_c_index > AGENT_ANSWER_THRESHOLD: return reflection_a_c_index #print 'Checking for rotation' # If A:B is a rotation, find the option that's the same angle # rotation of 'C' rotation_a_b_index = self.check_rotation( self.input_figures['A'][2], self.input_figures['B'][2], self.input_figures['C'][2] ) if rotation_a_b_index > AGENT_ANSWER_THRESHOLD: return rotation_a_b_index rotation_a_c_index = self.check_rotation( self.input_figures['A'][2], self.input_figures['C'][2], self.input_figures['B'][2] ) if rotation_a_c_index > AGENT_ANSWER_THRESHOLD: return rotation_a_c_index #print 'Checking for subtraction' # Check for: if B = A - x, then D = C - x # Find x (x = A - B) subtraction_a_b_index = self.check_subtraction( self.input_figures['A'][2], self.input_figures['B'][2], self.input_figures['C'][2] ) if subtraction_a_b_index > AGENT_ANSWER_THRESHOLD: return subtraction_a_b_index subtraction_a_c_index = self.check_subtraction( self.input_figures['A'][2], self.input_figures['C'][2], self.input_figures['B'][2] ) if subtraction_a_c_index > AGENT_ANSWER_THRESHOLD: return subtraction_a_c_index #print 'Checking for fill:unfilled' # Check if A:B or A:C is filled:unfilled or vice versa best_ratio = None best_option_index = None best_option_image = None bw_ratio_ab = ImageHelper.get_black_white_ratio( self.input_figures['A'][1], self.input_figures['B'][1]) bw_ratio_ac = ImageHelper.get_black_white_ratio( self.input_figures['A'][1], self.input_figures['C'][1]) for index, (option, optionImage, binary_image) in \ self.options.iteritems(): current_ratio = ImageHelper.get_black_white_ratio( self.input_figures['C'][1], optionImage) if not best_ratio: best_ratio = abs(current_ratio - bw_ratio_ab) best_option_index = index best_option_image = optionImage if abs(current_ratio - bw_ratio_ab) < best_ratio: best_ratio = abs(current_ratio - bw_ratio_ab) best_option_index = index best_option_image = optionImage current_ratio = ImageHelper.get_black_white_ratio( self.input_figures['B'][1], optionImage) if abs(current_ratio - bw_ratio_ac) < best_ratio: best_ratio = abs(current_ratio - bw_ratio_ac) best_option_index = index best_option_image = optionImage # Do a sanity check on answer if best_ratio < ImageHelper.FILL_RATIO_DIFF_THRESHOLD: ratio_a_b = \ ImageHelper.get_black_white_ratio(self.input_figures['C'][1], best_option_image) ratio_a_c = \ ImageHelper.get_black_white_ratio(self.input_figures['B'][1], best_option_image) if abs(ratio_a_b - bw_ratio_ab) > \ ImageHelper.FILL_RATIO_DIFF_THRESHOLD and \ abs(ratio_a_c - bw_ratio_ac) > \ ImageHelper.FILL_RATIO_DIFF_THRESHOLD: return -1 if abs(ratio_a_b - bw_ratio_ab) < \ ImageHelper.FILL_RATIO_DIFF_MIN_THRESHOLD or \ abs(ratio_a_c - bw_ratio_ac) < \ ImageHelper.FILL_RATIO_DIFF_MIN_THRESHOLD: return int(best_option_index) return int(best_option_index) return -1
def __init__(self,dbAdapter): self.posthelper = PostHelper(dbAdapter) self.imagehelper = ImageHelper(dbAdapter)
class PostController: """ to initial an instance of posthelper """ def __init__(self,dbAdapter): self.posthelper = PostHelper(dbAdapter) self.imagehelper = ImageHelper(dbAdapter) """ Get json file of all post, which the author can see @param aid author id @return None @return jsonstring """ def getPost(self,aid): post_list=[] json_list={} publicPost = self.posthelper.getPublicPost(aid) if publicPost != None: post_list.extend(publicPost) privatePost = self.posthelper.getPrivatePost(aid) if privatePost != None: post_list.extend(privatePost) fofPost = self.posthelper.getFriendsFriendPost(aid) if fofPost != None: post_list.extend(fofPost) friendsPost = self.posthelper.getFriendsPost(aid) if friendsPost != None: post_list.extend(friendsPost) authorPost = self.posthelper.getAuthorPost(aid) if authorPost != None: post_list.extend(authorPost) myHostFriendPost = self.posthelper.getMyHostFriendPost(aid) if myHostFriendPost != None: post_list.extend(myHostFriendPost) selectedPost = self.posthelper.getSelectedPost(aid) if selectedPost != None: post_list.extend(selectedPost) for post in post_list: if(post is None): return None else: single_dic = post.tojson() li = self.imagehelper.getImageByPid(post.getPid()); if len(li)>0: single_dic['img'] = li[0].getPath() else: single_dic['img'] = '' json_list[post.getPid()]=single_dic return json.dumps(json_list) ''' For public API to use only Get local public posts ''' def getLocalPublicPosts(self): rows = self.posthelper.getLocalPublicPosts() if rows != None: postsArray = [] for row in rows: post = {} author = {} author['id'] = row[6] author['host'] = row[8] author['displayname'] = row[7] author['url'] = "" post['title'] = row[2] post['source'] = "" post['origin'] = "" post['description'] = "" post['content-type'] = row[4] post['content'] = row[3] post['guid'] = row[0] post['categories'] = "" post['pubDate'] = row[1].strftime("%Y-%m-%d %H:%M:%S") post['visibility'] = row[5] post['author'] = author post['comments'] = [] postsArray.append(post) return postsArray return None ''' get post by author id ''' def getPostByAid(self,aid): list = self.posthelper.getPostByAid(aid) if list == None: return None re =[] for post in list: re.append(post.tojson()) return json.dumps(re) ''' get post by myself ''' def getMyPost(self,aid): post_list=[] json_list={} post_list.extend(self.posthelper.getMyPost(aid)) for post in post_list: if(post is None): return None else: json_list[post.getPid()]=post.tojson() return json.dumps(json_list)