Shipping available on this item USPS First Class
This helps prevent the card's edges and surface from getting scratched or damaged
Thassa's Oracle Thassa's Oracle isn't the best showcase of the devotion mechanic, since that part of the card is often largely irrelevant
1 Temple of Enlightenment

This is the card This is what i do: Read the card and convert it to grayscale import cv2 import numpy as np import pytesseract from PIL import Image frame = cv2.imread(" ") imgray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) Get the outer contour and resize the image edged = cv2.Canny(imgray, 30, 200) contours, hierarchy = cv2.findContours(edged, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) if len(contours) != 0: # find the biggest countour (c) by the area c = max(contours, key=cv2.contourArea) x, y, w, h = cv2.boundingRect(c) # draw the biggest contour (c) in green # cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) crop_frame = frame[y: y + h, x: x + w] crop_frame = cv2.resize(crop_frame, (450, 600), interpolation=cv2.INTER_AREA) Cut the bottom right corner height, width, channels = crop_frame.shape bottom_right_corner = crop_frame[560: 600, 300: 450] Read the bottom corner text with pytesseract ocr gray = cv2.cvtColor(bottom_right_corner, cv2.COLOR_BGR2GRAY) image_ = Image.fromarray(gray) text = pytesseract.image_to_string(image_) Final code import cv2 import numpy as np import pytesseract from PIL import Image frame = cv2.imread(" ") imgray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) edged = cv2.Canny(imgray, 30, 200) contours, hierarchy = cv2.findContours(edged, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) if len(contours) != 0: # find the biggest countour (c) by the area c = max(contours, key=cv2.contourArea) x, y, w, h = cv2.boundingRect(c) # draw the biggest contour (c) in green # cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) crop_frame = frame[y: y + h, x: x + w] crop_frame = cv2.resize(crop_frame, (450, 600), interpolation=cv2.INTER_AREA) height, width, channels = crop_frame.shape bottom_right_corner = crop_frame[560: 600, 300: 450] gray = cv2.cvtColor(bottom_right_corner, cv2.COLOR_BGR2GRAY) cv2.imshow("gray", gray) cv2.waitKey(0) image_ = Image.fromarray(gray) text = pytesseract.image_to_string(image_) print("Text: ", text)

These cards can be redeemed to craft any card in the game if players have the wildcard of correlating rank: Gray = Common Cyan = Uncommon Gold = Rare Red = Mythic Rare Gems are rarer, unless players are willing to fork over some real-world money (in the form of widely hated microtransactions)