-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRank_Suit_Isolator.py
104 lines (70 loc) · 2.65 KB
/
Rank_Suit_Isolator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import cv2
import numpy as np
import time
import Cards
import os
img_path = os.path.dirname(os.path.abspath(__file__)) + '/Cards/'
IM_WIDTH = 1280
IM_HEIGHT = 720
RANK_WIDTH = 70
RANK_HEIGHT = 125
SUIT_WIDTH = 70
SUIT_HEIGHT = 100
cap = cv2.VideoCapture(0)
i = 1
for Name in ['Ace','Two','Three','Four','Five','Six','Seven','Eight',
'Nine','Ten','Jack','Queen','King','Spades','Diamonds',
'Clubs','Hearts']:
filename = Name + '.jpg'
print('Press "p" to take a picture of ' + filename)
while(True):
ret, frame = cap.read()
cv2.imshow("Card",frame)
key = cv2.waitKey(1) & 0xFF
if key == ord("p"):
image = frame
break
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray,(5,5),0)
retval, thresh = cv2.threshold(blur,100,255,cv2.THRESH_BINARY)
dummy,cnts,hier = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cnts = sorted(cnts, key=cv2.contourArea,reverse=True)
flag = 0
image2 = image.copy()
if len(cnts) == 0:
print('No contours found!')
quit()
card = cnts[0]
peri = cv2.arcLength(card,True)
approx = cv2.approxPolyDP(card,0.01*peri,True)
pts = np.float32(approx)
x,y,w,h = cv2.boundingRect(card)
warp = Cards.flattener(image,pts,w,h)
corner = warp[0:84, 0:32]
corner_zoom = cv2.resize(corner, (0,0), fx=4, fy=4)
corner_blur = cv2.GaussianBlur(corner_zoom,(5,5),0)
retval, corner_thresh = cv2.threshold(corner_blur, 155, 255, cv2. THRESH_BINARY_INV)
if i <= 13:
rank = corner_thresh[20:185, 0:128]
dummy, rank_cnts, hier = cv2.findContours(rank, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
rank_cnts = sorted(rank_cnts, key=cv2.contourArea,reverse=True)
x,y,w,h = cv2.boundingRect(rank_cnts[0])
rank_roi = rank[y:y+h, x:x+w]
rank_sized = cv2.resize(rank_roi, (RANK_WIDTH, RANK_HEIGHT), 0, 0)
final_img = rank_sized
if i > 13:
suit = corner_thresh[186:336, 0:128]
dummy, suit_cnts, hier = cv2.findContours(suit, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
suit_cnts = sorted(suit_cnts, key=cv2.contourArea,reverse=True)
x,y,w,h = cv2.boundingRect(suit_cnts[0])
suit_roi = suit[y:y+h, x:x+w]
suit_sized = cv2.resize(suit_roi, (SUIT_WIDTH, SUIT_HEIGHT), 0, 0)
final_img = suit_sized
cv2.imshow("Image",final_img)
print('Press "c" to continue.')
key = cv2.waitKey(0) & 0xFF
if key == ord('c'):
cv2.imwrite(img_path+filename,final_img)
i = i + 1
cv2.destroyAllWindows()
camera.close()