示例#1
0
def kafkastream():
    c = Consumer({
        'group.id': args.groupid,
        'default.topic.config': {
            'auto.offset.reset': 'earliest',
            'enable.auto.commit': 'false'
        }
    })
    # c.subscribe(['/user/mapr/nextgenDLapp/rawvideostream:topic1'])
    c.subscribe([args.stream + ':' + args.topic])
    running = True
    while running:
        msg = c.poll(timeout=0.2)
        if msg is None: continue
        if not msg.error():
            nparr = np.fromstring(msg.value(), np.uint8)
            image = cv2.imdecode(nparr, 1)
            ret, jpeg = cv2.imencode('.png', image)
            bytecode = jpeg.tobytes()
            time.sleep(args.timeout)
            yield (b'--frame\r\n'
                   b'Content-Type: image/png\r\n\r\n' + bytecode + b'\r\n\r\n')

        elif msg.error().code() != KafkaError._PARTITION_EOF:
            print(msg.error())
            running = False
    c.close()
def kafkastream():
    c = Consumer({
        'group.id': 'consumer1',
        'default.topic.config': {
            'auto.offset.reset': 'earliest',
            'enable.auto.commit': 'false'
        }
    })
    c.subscribe(['/tmp/rawvideostream:topic1'])
    running = True
    while running:
        msg = c.poll(timeout=1.0)
        if msg is None: continue
        if not msg.error():
            nparr = np.fromstring(msg.value(), np.uint8)
            image = cv2.imdecode(nparr, 1)
            frame = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
            ret, jpeg = cv2.imencode('.png', frame)
            bytecode = jpeg.tobytes()
            yield (b'--frame\r\n'
                   b'Content-Type: image/png\r\n\r\n' + bytecode + b'\r\n\r\n')

        elif msg.error().code() != KafkaError._PARTITION_EOF:
            print(msg.error())
            running = False
    c.close()
def kafkastream():
    c = Consumer({
        'group.id': 'consumer2',
        'default.topic.config': {
            'auto.offset.reset': 'earliest',
            'enable.auto.commit': 'false'
        }
    })
    # c.subscribe(['/user/mapr/nextgenDLapp/rawvideostream:topic1'])
    c.subscribe(['/tmp/rawvideostream:topic1'])
    running = True
    while running:
        msg = c.poll(timeout=0.2)
        if msg is None: continue
        if not msg.error():
            nparr = np.fromstring(msg.value(), np.uint8)
            bytecode = detect(nparr)
            yield (b'--frame\r\n'
                   b'Content-Type: image/png\r\n\r\n' + bytecode + b'\r\n\r\n')

        elif msg.error().code() != KafkaError._PARTITION_EOF:
            print(msg.error())
            running = False
    c.close()
示例#4
0
            dets = dets[keep, :]
            print("video position (ms): "+msg.key())
            print(dets.shape[0])
            toc = time.time()
            img_final = img_orig.copy()
            # color = cv2.cvtColor(img_orig, cv2.COLOR_RGB2BGR)

            print("time cost is:{}s".format(toc-tic))
            embedding_vector = []
            bbox_vector = []
            for i in range(dets.shape[0]):
                bbox = dets[i, :4]
                roundfunc = lambda t: int(round(t/scale))
                vfunc = np.vectorize(roundfunc)
                bbox = vfunc(bbox)
                # cv2.rectangle(color, (int(round(bbox[0]/scale)), int(round(bbox[1]/scale))),
                f_temp, img_orig_temp = model.get_feature(img_orig, bbox, None)
                embedding_vector.append(f_temp)
                bbox_vector.append(bbox)
                cv2.rectangle(img_final, (int(round(bbox[0])), int(round(bbox[1]))),
                    (int(round(bbox[2])), int(round(bbox[3]))),  (0, 255, 0), 2)
            img_final = cv2.cvtColor(img_final, cv2.COLOR_RGB2BGR)
            ret, jpeg = cv2.imencode('.png', img_final)
            # p.produce(args.writetopic2, jpeg.tostring())
            p_orig.produce(args.writetopic1, pickle.dumps([msg.value(), bbox_vector, embedding_vector]), msg.key())
        elif msg.error().code() != KafkaError._PARTITION_EOF:
            print(msg.error())
            running = False
    c.close()
    p.flush()
示例#5
0
def kafkastream():
    if args.gpuid >= 0:
        ctx = mx.gpu(args.gpuid)
    else:
        ctx = mx.cpu()
    _, arg_params, aux_params = mx.model.load_checkpoint('mxnet-face-fr50', 0)
    arg_params, aux_params = ch_dev(arg_params, aux_params, ctx)
    sym = resnet_50(num_class=2)
    model = face_embedding.FaceModel(args.gpuid)

    f1T = get_face_embedding(args.filename, arg_params, aux_params, sym, model,
                             ctx)

    c = Consumer({
        'group.id': args.groupid,
        'default.topic.config': {
            'auto.offset.reset': 'earliest',
            'enable.auto.commit': 'false'
        }
    })
    c.subscribe([args.readstream + ':' + args.readtopic])
    running = True
    p = Producer({'streams.producer.default.stream': args.writestream})

    while running:
        msg = c.poll(timeout=0)
        if msg is None: continue
        if not msg.error():
            pickle_vector = pickle.loads(msg.value())
            nparr = np.fromstring(pickle_vector[0], np.uint8)
            img_orig = cv2.imdecode(nparr, 1)

            bbox_vector = pickle_vector[1]
            print(len(bbox_vector))
            embedding_vector = pickle_vector[2]
            if len(embedding_vector) > 0:
                sim_vector = [np.dot(f, f1T) for f in embedding_vector]
                idx = sim_vector.index(max(sim_vector))
                bbox = bbox_vector[idx]
                sim = sim_vector[idx]
                if sim > args.threshold:
                    img = cv2.cvtColor(img_orig, cv2.COLOR_RGB2BGR)
                    cv2.rectangle(img,
                                  (int(round(bbox[0])), int(round(bbox[1]))),
                                  (int(round(bbox[2])), int(round(bbox[3]))),
                                  (0, 255, 0), 2)
                    ret, jpeg = cv2.imencode('.png', img)
                    bytecode = jpeg.tobytes()
                    time.sleep(args.timeout)
                    yield (b'--frame\r\n'
                           b'Content-Type: image/png\r\n\r\n' + bytecode +
                           b'\r\n\r\n')
                    if args.writetostream:
                        p.produce(args.writetopic, jpeg.tostring())
                        print(args.writetopic)
        elif msg.error().code() != KafkaError._PARTITION_EOF:
            print(msg.error())
            running = False

    c.close()
    p.flush()