| | |
| | | import math |
| | | import random |
| | | import os |
| | | import cv2 |
| | | |
| | | def sample(probs): |
| | | s = sum(probs) |
| | |
| | | #pylint: disable= C0321 |
| | | im = load_image(image, 0, 0) |
| | | #import cv2 |
| | | #custom_image = cv2.imread(image) # use: detect(,,imagePath,) |
| | | #custom_image_bgr = cv2.imread(image) # use: detect(,,imagePath,) |
| | | #custom_image = cv2.cvtColor(custom_image_bgr, cv2.COLOR_BGR2RGB) |
| | | #custom_image = cv2.resize(custom_image,(lib.network_width(net), lib.network_height(net)), interpolation = cv2.INTER_LINEAR) |
| | | #import scipy.misc |
| | | #custom_image = scipy.misc.imread(image) |
| | | #im, arr = array_to_image(custom_image) # you should comment line below: free_image(im) |
| | |
| | | if debug: print("Assigned pnum") |
| | | predict_image(net, im) |
| | | if debug: print("did prediction") |
| | | dets = get_network_boxes(net, im.w, im.h, thresh, hier_thresh, None, 0, pnum, 1) |
| | | #dets = get_network_boxes(net, custom_image_bgr.shape[1], custom_image_bgr.shape[0], thresh, hier_thresh, None, 0, pnum, 0) # OpenCV |
| | | dets = get_network_boxes(net, im.w, im.h, thresh, hier_thresh, None, 0, pnum, 0) |
| | | if debug: print("Got dets") |
| | | num = pnum[0] |
| | | if debug: print("got zeroth index of pnum") |
| | |
| | | if not os.path.exists(imagePath): |
| | | raise ValueError("Invalid image path `"+os.path.abspath(imagePath)+"`") |
| | | # Do the detection |
| | | #detections = detect(netMain, metaMain, imagePath, thresh) # if is used cv2.imread(image) |
| | | detections = detect(netMain, metaMain, imagePath.encode("ascii"), thresh) |
| | | if showImage: |
| | | try: |
| | |
| | | print("Unable to show image: "+str(e)) |
| | | return detections |
| | | |
| | | |
| | | def capture(thresh=.5, hier_thresh=.5, nms=.45, configPath="./cfg/yolov3.cfg", weightPath="yolov3.weights", |
| | | metaPath="./data/coco.data", showImage=True, makeImageOnly=False, initOnly=False): |
| | | global metaMain, netMain, altNames # pylint: disable=W0603 |
| | | netMain = load_net_custom(configPath.encode("ascii"), weightPath.encode("ascii"), 0, 1) # batch size = 1 |
| | | metaMain = load_meta(metaPath.encode("ascii")) |
| | | |
| | | num = c_int(0) |
| | | pnum = pointer(num) |
| | | num = pnum[0] |
| | | |
| | | capture = cv2.VideoCapture('../data/test3.mp4') |
| | | print(capture.get(cv2.CAP_PROP_FPS)) |
| | | |
| | | capture.set(cv2.CAP_PROP_FRAME_WIDTH, 1024) |
| | | capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 768) |
| | | |
| | | while True: |
| | | ret, frame = capture.read() |
| | | im, arr = array_to_image(frame) |
| | | predict_image(netMain, im) |
| | | dets = get_network_boxes(netMain, im.w, im.h, thresh, hier_thresh, None, 0, pnum, 1) |
| | | if nms: |
| | | do_nms_sort(dets, num, metaMain.classes, nms) |
| | | res = [] |
| | | for j in range(num): |
| | | for i in range(metaMain.classes): |
| | | if dets[j].prob[i] > 0: |
| | | b = dets[j].bbox |
| | | nameTag = metaMain.names[i] |
| | | res.append((nameTag, dets[j].prob[i], (b.x, b.y, b.w, b.h))) |
| | | print(res) |
| | | cv2.imshow('frame', frame) |
| | | if cv2.waitKey(1) & 0xFF == ord('q'): |
| | | break |
| | | |
| | | capture.release() |
| | | cv2.destroyAllWindows() |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | print(performDetect()) |
| | | performDetect(imagePath="../data/test1.jpg", thresh=0.25, configPath="./cfg/tiny_yolo.cfg", |
| | | weightPath="./weights/second_general/tiny_yolo_17000.weights", |
| | | metaPath="./data/obj.data", showImage=True, makeImageOnly=False, initOnly=False) |
| | | #print(performDetect(showImage=False)) |
| | | #capture() |