diff --git a/stream/candy1.jpg b/stream/candy1.jpg new file mode 100644 index 0000000..0b55593 Binary files /dev/null and b/stream/candy1.jpg differ diff --git a/stream/candy2.jpg b/stream/candy2.jpg new file mode 100644 index 0000000..5b1e20b Binary files /dev/null and b/stream/candy2.jpg differ diff --git a/stream/candy3.jpg b/stream/candy3.jpg new file mode 100644 index 0000000..6858422 Binary files /dev/null and b/stream/candy3.jpg differ diff --git a/stream/candy4.jpg b/stream/candy4.jpg new file mode 100644 index 0000000..e8a09c9 Binary files /dev/null and b/stream/candy4.jpg differ diff --git a/stream/list.jpg b/stream/list.jpg new file mode 100644 index 0000000..41bff37 Binary files /dev/null and b/stream/list.jpg differ diff --git a/stream/stest.py b/stream/stest.py new file mode 100644 index 0000000..7fcd7d3 --- /dev/null +++ b/stream/stest.py @@ -0,0 +1,100 @@ +import cv2 +import time +from xmlrpc.server import SimpleXMLRPCServer +from xmlrpc.server import SimpleXMLRPCRequestHandler +from threading import Thread + +cap = cv2.VideoCapture(0) +font = cv2.FONT_HERSHEY_SIMPLEX +list_img = cv2.imread('list.jpg') +list_img = cv2.resize(list_img,None,fx=0.8, fy=0.8, interpolation = cv2.INTER_CUBIC) +target_w = 50 +candy1_img = cv2.imread('candy1.jpg') +factor = target_w / candy1_img.shape[0] +candy1_img = cv2.resize(candy1_img,None,fx=factor, fy=factor, interpolation = cv2.INTER_CUBIC) +candy2_img = cv2.imread('candy2.jpg') +factor = target_w / candy2_img.shape[0] +candy2_img = cv2.resize(candy2_img,None,fx=factor, fy=factor, interpolation = cv2.INTER_CUBIC) +candy3_img = cv2.imread('candy3.jpg') +factor = target_w / candy3_img.shape[0] +candy3_img = cv2.resize(candy3_img,None,fx=factor, fy=factor, interpolation = cv2.INTER_CUBIC) +candy4_img = cv2.imread('candy4.jpg') +factor = target_w / candy4_img.shape[0] +candy4_img = cv2.resize(candy4_img,None,fx=factor, fy=factor, interpolation = cv2.INTER_CUBIC) +img_list = [candy1_img, candy2_img, candy3_img, candy4_img] + +IMG_W = 1280 +IMG_H = 720 +rect_w = 220 +rect_h = 52 + +test_candy_stat = [] +s = {} +s['img_idx'] = 0 +s['loaded'] = 0 +s['required'] = 4 +test_candy_stat.append(s) +s = {} +s['img_idx'] = 1 +s['loaded'] = 2 +s['required'] = 2 +test_candy_stat.append(s) +s = {} +s['img_idx'] = 2 +s['loaded'] = 1 +s['required'] = 6 +test_candy_stat.append(s) +s = {} +s['img_idx'] = 3 +s['loaded'] = 6 +s['required'] = 9 +test_candy_stat.append(s) + +def new_order(params): + pass + +def async_server_megahack(server): + server.serve_forever() + +# Restrict to a particular path. +class RequestHandler(SimpleXMLRPCRequestHandler): + rpc_paths = ('/RPC2',) + +def draw_rectangles(img, n): + for i in range(n): + cv2.rectangle(img, (IMG_W - 5 - rect_w,5 + (rect_h + 5)*i), (IMG_W - 5, 5 + (rect_h + 5)*i + rect_h), (255, 255, 255), -1) + +def print_stats(img, stats): + # draw_rectangles(img, len(stats)) + img[0:list_img.shape[0], IMG_W-list_img.shape[1]:IMG_W, :] = list_img[:] + for i in range(len(stats)): + cv2.putText(frame,str(stats[i]['loaded']),(IMG_W - 130,188 + i * (rect_h + 5)), font, 1.3,(0, 0, 0),2,cv2.LINE_AA) + cv2.putText(frame,"/",(IMG_W - 90,188 + i * (rect_h + 5)), font, 1.3,(0, 0, 0),2,cv2.LINE_AA) + cv2.putText(frame,str(stats[i]['required']),(IMG_W - 50,188 + i * (rect_h + 5)), font, 1.3,(0, 0, 0),2,cv2.LINE_AA) + img[150+(rect_h + 5)*i:150+(rect_h + 5)*i + target_w, IMG_W-130-target_w-20:IMG_W-130-20, :] = img_list[stats[i]['img_idx']][:] + +cv2.namedWindow("window", cv2.WND_PROP_FULLSCREEN) +cv2.setWindowProperty("window",cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN) +with SimpleXMLRPCServer(('localhost', 8000), + requestHandler=RequestHandler) as server: + server.register_introspection_functions() + + # Register pow() function; this will use the value of + # pow.__name__ as the name, which is just 'pow'. + server.register_function(new_order) + + # Run the server's main loop + t = Thread(target=async_server_megahack, args=(server,)) + t.start() + while True: + ret, frame = cap.read() + frame = cv2.resize(frame,None,fx=2, fy=1.5, interpolation = cv2.INTER_CUBIC) + print_stats(frame, test_candy_stat) + print(frame.shape) + cv2.imshow("window", frame) + if cv2.waitKey(1) & 0xFF == ord('q'): + break + +# When everything done, release the capture +cap.release() +cv2.destroyAllWindows() \ No newline at end of file