Esempio n. 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"])
    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"])
Esempio n. 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)
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)
    def test_partial_name_ori_claustrophobia(self):
        result = match_card("daListropholoia",)

        self.assertIsNotNone(result)
        self.assertEquals("Claustrophobia", result["name"])
        self.assertEquals("50", result["number"])
Esempio n. 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"])
    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"])
    def test_all_none(self):
        result = match_card()

        self.assertIsNone(result)
    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"])
    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"])
    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"])
Esempio n. 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"])
Esempio n. 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"])
Esempio n. 14
0
    def test_all_none(self):
        result = match_card()

        self.assertIsNone(result)
Esempio n. 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"])
Esempio n. 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"])
Esempio n. 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"])
Esempio n. 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"])
    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"])
Esempio n. 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"])
    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"])
Esempio n. 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"])
    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"])
Esempio n. 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"])
    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"])
Esempio n. 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"])
    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"])
    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"])
    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"])
Esempio n. 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"])