コード例 #1
0
    def test_partial_name_dtk_champion_of_arashin(self):
        result = match_card("Charnpion of Arashin", edition="dtk")

        self.assertIsNotNone(result)
        self.assertEquals("Champion of Arashin", result["name"])
        self.assertEquals("9", result["number"])

        result = match_card("Charnpion Arashin", edition="dtk")

        self.assertIsNotNone(result)
        self.assertEquals("Champion of Arashin", result["name"])
        self.assertEquals("9", result["number"])
コード例 #2
0
    def test_partial_name_dtk_champion_of_arashin(self):
        result = match_card("Charnpion of Arashin", edition="dtk")

        self.assertIsNotNone(result)
        self.assertEquals("Champion of Arashin", result["name"])
        self.assertEquals("9", result["number"])

        result = match_card("Charnpion Arashin", edition="dtk")

        self.assertIsNotNone(result)
        self.assertEquals("Champion of Arashin", result["name"])
        self.assertEquals("9", result["number"])
コード例 #3
0
def identify_image(image, find_card=False):
    if find_card:
        image = find_card_image(image)

    color_dict = get_card_color(image)

    # Resize images that are too small for good OCR
    image_height, image_width = _get_image_size(image)
    if image_height < MINIMUM_HEIGHT or image_width < MINIMUM_WIDTH:
        scale_x = max(MINIMUM_WIDTH / image_width, 1)
        scale_y = max(MINIMUM_HEIGHT / image_height, 1)
        image = cv2.resize(image, (0, 0),
                           fx=scale_x,
                           fy=scale_y,
                           interpolation=cv2.INTER_LANCZOS4)

    grayscale_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    card_name = get_card_name(grayscale_image).strip()
    card_text = get_card_text(grayscale_image).strip()
    card_type = get_card_type(grayscale_image).strip()
    number, edition = get_card_number_and_edition(grayscale_image)

    debug = {
        "card_name": card_name,
        "number": number,
        "edition": edition,
        "color": color_dict,
        "text": card_text,
        "type": card_type,
    }

    with open(os.path.join(LATEST_DIR, "latest_debug.json"), 'w') as outfile:
        json.dump(debug, outfile)

    if DEBUG:
        print(debug)

    return match_card(card_name, number, edition)
コード例 #4
0
def identify_image(image, find_card=False):
    if find_card:
        image = find_card_image(image)

    color_dict = get_card_color(image)

    # Resize images that are too small for good OCR
    image_height, image_width = _get_image_size(image)
    if image_height < MINIMUM_HEIGHT or image_width < MINIMUM_WIDTH:
        scale_x = max(MINIMUM_WIDTH / image_width, 1)
        scale_y = max(MINIMUM_HEIGHT / image_height, 1)
        image = cv2.resize(image, (0, 0), fx=scale_x, fy=scale_y, interpolation=cv2.INTER_LANCZOS4)

    grayscale_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    card_name = get_card_name(grayscale_image).strip()
    card_text = get_card_text(grayscale_image).strip()
    card_type = get_card_type(grayscale_image).strip()
    number, edition = get_card_number_and_edition(grayscale_image)

    debug = {
        "card_name": card_name,
        "number": number,
        "edition": edition,
        "color": color_dict,
        "text": card_text,
        "type": card_type,
    }

    with open(os.path.join(LATEST_DIR, "latest_debug.json"), 'w') as outfile:
        json.dump(debug, outfile)

    if DEBUG:
        print(debug)

    return match_card(card_name, number, edition)
コード例 #5
0
    def test_partial_name_ori_claustrophobia(self):
        result = match_card("daListropholoia",)

        self.assertIsNotNone(result)
        self.assertEquals("Claustrophobia", result["name"])
        self.assertEquals("50", result["number"])
コード例 #6
0
    def test_exact_ainok_bond_kin(self):
        result = match_card("Ainok Bond-Kin", "003", edition="ktk")

        self.assertEquals("Ainok Bond-Kin", result["name"])
        self.assertEquals("3", result["number"])
コード例 #7
0
    def test_partial_name_bfz_tandem_tactics(self):
        result = match_card("Tanolem Tactios", edition="bfz")

        self.assertIsNotNone(result)
        self.assertEquals("Tandem Tactics", result["name"])
        self.assertEquals("52", result["number"])
コード例 #8
0
    def test_all_none(self):
        result = match_card()

        self.assertIsNone(result)
コード例 #9
0
    def test_exact_ainok_bond_kin(self):
        result = match_card("Ainok Bond-Kin", "003")

        self.assertEquals("Ainok Bond-Kin", result["name"])
        self.assertEquals("3", result["number"])
        self.assertEqual(386471, result["multiverseid"])
コード例 #10
0
    def test_exact_number_dtk_champion_of_arashin(self):
        result = match_card(None, 9, edition="dtk")

        self.assertEquals("Champion of Arashin", result["name"])
        self.assertEquals("9", result["number"])
コード例 #11
0
    def test_exact_number_bfz_tandem_tactics(self):
        result = match_card(None, 52, edition="bfz")

        self.assertEquals("Tandem Tactics", result["name"])
        self.assertEquals("52", result["number"])
コード例 #12
0
    def test_exact_avacyn_guardian_angel(self):
        result = match_card("Avacyn, Guardian Angel", "003")

        self.assertEquals("Avacyn, Guardian Angel", result["name"])
        self.assertEquals("3", result["number"])
        self.assertEqual(383185, result["multiverseid"])
コード例 #13
0
    def test_exact_ainok_bond_kin(self):
        result = match_card("Ainok Bond-Kin", "003")

        self.assertEquals("Ainok Bond-Kin", result["name"])
        self.assertEquals("3", result["number"])
        self.assertEqual(386471, result["multiverseid"])
コード例 #14
0
    def test_all_none(self):
        result = match_card()

        self.assertIsNone(result)
コード例 #15
0
    def test_exact_number_bfz_ghostly_sentinel(self):
        result = match_card(None, "028", edition="bfz")

        self.assertEquals("Ghostly Sentinel", result["name"])
        self.assertEquals("28", result["number"])
コード例 #16
0
    def test_exact_number_bfz_tandem_tactics(self):
        result = match_card(None, 52, edition="bfz")

        self.assertEquals("Tandem Tactics", result["name"])
        self.assertEquals("52", result["number"])
コード例 #17
0
    def test_exact_number_bfz_endless_one(self):
        result = match_card(None, 8, edition="bfz")

        self.assertEquals("Endless One", result["name"])
        self.assertEquals("8", result["number"])
コード例 #18
0
    def test_exact_number_dtk_champion_of_arashin(self):
        result = match_card(None, 9, edition="dtk")

        self.assertEquals("Champion of Arashin", result["name"])
        self.assertEquals("9", result["number"])
コード例 #19
0
    def test_exact_avacyn_guardian_angel(self):
        result = match_card("Avacyn, Guardian Angel", "003", edition="m15")

        self.assertEquals("Avacyn, Guardian Angel", result["name"])
        self.assertEquals("3", result["number"])
コード例 #20
0
    def test_exact_name_bfz_endless_one(self):
        result = match_card("Endless One")

        self.assertEquals("Endless One", result["name"])
        self.assertEquals("8", result["number"])
        self.assertEqual(401871, result["multiverseid"])
コード例 #21
0
    def test_exact_ainok_bond_kin(self):
        result = match_card("Ainok Bond-Kin", "003", edition="ktk")

        self.assertEquals("Ainok Bond-Kin", result["name"])
        self.assertEquals("3", result["number"])
コード例 #22
0
    def test_partial_name_ori_claustrophobia(self):
        result = match_card("daListropholoia", )

        self.assertIsNotNone(result)
        self.assertEquals("Claustrophobia", result["name"])
        self.assertEquals("50", result["number"])
コード例 #23
0
    def test_exact_number_bfz_endless_one(self):
        result = match_card(None, 8, edition="bfz")

        self.assertEquals("Endless One", result["name"])
        self.assertEquals("8", result["number"])
コード例 #24
0
    def test_partial_name_bfz_endless_one(self):
        result = match_card("Endless One fm", edition="bfz")

        self.assertIsNotNone(result)
        self.assertEquals("Endless One", result["name"])
        self.assertEquals("8", result["number"])
コード例 #25
0
    def test_exact_number_bfz_ghostly_sentinel(self):
        result = match_card(None, "028", edition="bfz")

        self.assertEquals("Ghostly Sentinel", result["name"])
        self.assertEquals("28", result["number"])
コード例 #26
0
    def test_partial_name_bfz_tandem_tactics(self):
        result = match_card("Tanolem Tactios", edition="bfz")

        self.assertIsNotNone(result)
        self.assertEquals("Tandem Tactics", result["name"])
        self.assertEquals("52", result["number"])
コード例 #27
0
    def test_exact_avacyn_guardian_angel(self):
        result = match_card("Avacyn, Guardian Angel", "003")

        self.assertEquals("Avacyn, Guardian Angel", result["name"])
        self.assertEquals("3", result["number"])
        self.assertEqual(383185, result["multiverseid"])
コード例 #28
0
    def test_partial_name_bfz_endless_one(self):
        result = match_card("Endless One fm", edition="bfz")

        self.assertIsNotNone(result)
        self.assertEquals("Endless One", result["name"])
        self.assertEquals("8", result["number"])
コード例 #29
0
    def test_exact_name_bfz_endless_one(self):
        result = match_card("Endless One")

        self.assertEquals("Endless One", result["name"])
        self.assertEquals("8", result["number"])
        self.assertEqual(401871, result["multiverseid"])
コード例 #30
0
    def test_exact_avacyn_guardian_angel(self):
        result = match_card("Avacyn, Guardian Angel", "003", edition="m15")

        self.assertEquals("Avacyn, Guardian Angel", result["name"])
        self.assertEquals("3", result["number"])