|
@@ -36,14 +36,7 @@ def get_frame(device):
|
|
|
def cleanup(cam_id = 0):
|
|
|
cv2.destroyAllWindows()
|
|
|
cv2.VideoCapture(cam_id).release()
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-def new_rgb_image(width, height):
|
|
|
- image = numpy.zeros( (height, width, 3), numpy.uint8)
|
|
|
- return image
|
|
|
+
|
|
|
|
|
|
|
|
|
corner_point_list = []
|
|
@@ -123,7 +116,7 @@ def get_transform_matrix(dev, board_size, dpi, calib_file = None):
|
|
|
|
|
|
|
|
|
dest = np.array( [ (0, 0), (0, board_size[1]*dpi), (board_size[0]*dpi, 0), (board_size[0]*dpi, board_size[1]*dpi) ], np.float32)
|
|
|
-
|
|
|
+ print(corner_point_list)
|
|
|
|
|
|
trans = cv2.getPerspectiveTransform(src, dest)
|
|
|
|
|
@@ -134,19 +127,6 @@ def get_transform_matrix(dev, board_size, dpi, calib_file = None):
|
|
|
else:
|
|
|
return None
|
|
|
|
|
|
-def get_green_dots(img_orig):
|
|
|
-
|
|
|
-
|
|
|
- b,g,r = cv2.split(img_orig)
|
|
|
- gg = g - 6
|
|
|
- green = ((gg > r) & (gg > b) & (g > 120)).astype(np.uint8)*255
|
|
|
-
|
|
|
- kernel = np.ones((4,4),np.uint8)
|
|
|
- opening = cv2.morphologyEx(green, cv2.MORPH_OPEN, kernel)
|
|
|
-
|
|
|
- img = cv2.bitwise_and(img_orig,img_orig,mask = opening)
|
|
|
- contours = find_contours(opening)
|
|
|
- return find_centers(contours)
|
|
|
|
|
|
|
|
|
|
|
@@ -154,11 +134,6 @@ if __name__ == "__main__":
|
|
|
parser = argparse.ArgumentParser()
|
|
|
cam_id = 1
|
|
|
dev = None
|
|
|
-
|
|
|
- parser.add_argument('-a',
|
|
|
- '--automatic',
|
|
|
- action='store_false',
|
|
|
- help='Enable auto detect green dots (default=False)')
|
|
|
|
|
|
parser.add_argument('-n',
|
|
|
'--nocamera',
|
|
@@ -166,7 +141,6 @@ if __name__ == "__main__":
|
|
|
help='Disable camera, players need to send the position (default=False)')
|
|
|
|
|
|
args = parser.parse_args()
|
|
|
- manual = args.automatic
|
|
|
camera = args.nocamera
|
|
|
|
|
|
dev = None
|
|
@@ -176,21 +150,21 @@ if __name__ == "__main__":
|
|
|
|
|
|
|
|
|
|
|
|
- board_size = [140, 125]
|
|
|
+ board_size = [215, 185]
|
|
|
point = []
|
|
|
|
|
|
|
|
|
|
|
|
- dpi = 10
|
|
|
+ dpi = 5
|
|
|
|
|
|
|
|
|
transform_size = (int(board_size[0]*dpi), int(board_size[1]*dpi))
|
|
|
|
|
|
|
|
|
transform = None
|
|
|
- if manual and camera:
|
|
|
- transform = get_transform_matrix(dev, board_size, dpi)
|
|
|
-
|
|
|
+ if camera:
|
|
|
+
|
|
|
+ transform = get_transform_matrix_points([(340, 10), (78, 1066), (1502, 6), (1806, 1045)], board_size, dpi)
|
|
|
|
|
|
server = tag.TagServer(10318, board_size)
|
|
|
|
|
@@ -205,10 +179,6 @@ if __name__ == "__main__":
|
|
|
if img_orig is not None:
|
|
|
img = img_orig
|
|
|
if camera:
|
|
|
-
|
|
|
- if not manual:
|
|
|
- centers = get_green_dots(img_orig)
|
|
|
- transform = get_transform_matrix_points(centers, board_size, dpi)
|
|
|
|
|
|
img = cv2.warpPerspective(img_orig, transform, dsize=transform_size)
|
|
|
e1 = cv2.getTickCount()
|
|
@@ -216,7 +186,7 @@ if __name__ == "__main__":
|
|
|
markers = getCMarkers(img)
|
|
|
e2 = cv2.getTickCount()
|
|
|
tt = (e2 - e1)/ cv2.getTickFrequency()
|
|
|
- print("mk", tt)
|
|
|
+
|
|
|
|
|
|
for i in markers:
|
|
|
idd, p, head = i
|
|
@@ -235,12 +205,13 @@ if __name__ == "__main__":
|
|
|
cv2.line(img, (p1[0], p1[1]), (p2[0], p2[1]), color)
|
|
|
if server.paused:
|
|
|
cv2.putText(img, "PAUSE", (0,30), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255))
|
|
|
- res = cv2.resize(img,None,fx=.5, fy=.5)
|
|
|
+
|
|
|
end = time.time()
|
|
|
seconds = end - start
|
|
|
fps = 1.0 / seconds
|
|
|
start = time.time()
|
|
|
- cv2.putText(res, str(fps), (0,60), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255))
|
|
|
+ cv2.putText(img, str(fps), (0,60), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255))
|
|
|
+ res = img
|
|
|
cv2.imshow("warped", res)
|
|
|
|
|
|
else:
|