Ejemplo n.º 1
0
def get_picture_set(camera):
    # used by /3d
    if _DEBUG:
        print ("Flash", get_exposure_info(camera))
    set_flash(False)
    set_dias(DIAS_LEVEL)
    fd2 = BytesIO()
    sleep(CAPTURE_DELAY)
    if _DEBUG:
        print ("Dias", get_exposure_info(camera))
    camera.capture(fd2, format='jpeg', use_video_port=True, quality=JPEG_QUALITY)
    fd2.truncate()
    fd2.seek(0)
    fix_exposure(camera)
    set_dias(False)
    sleep(CAPTURE_DELAY)
    if _DEBUG:
        print ("Dark", get_exposure_info(camera))
    fd3 = BytesIO()
    camera.capture(fd3, format='jpeg', use_video_port=True, quality=JPEG_QUALITY)
    fd3.truncate()
    fd3.seek(0)
    auto_exposure(camera)
    #set_flash(FLASH_LEVEL)
    return (fd2, fd3)
Ejemplo n.º 2
0
def test():
    mycamera = init_camera()
    mycamera.resolution = (640, 480)
    warm_up()
    settings = CameraSettings(mycamera)
    dias = None
    flash = None
    if request.method == 'POST':
        print(request.form)
        settings.contrast = int(request.form['contrast'])
        settings.brightness = int(request.form['brightness'])
        settings.saturation = int(request.form['saturation'])
        settings.iso = int(request.form['iso'])
        settings.exposure_compensation = int(
            request.form['exposure_compensation'])
        settings.exposure_mode = request.form['exposure_mode']
        settings.awb_mode = request.form['awb_mode']
        settings.sharpness = int(request.form['sharpness'])
        settings.meter_mode = request.form['meter_mode']
        settings.drc_strength = request.form['drc_strength']
        settings.resolution = request.form['resolution']
        settings.shutter_speed = int(request.form['shutter_speed']) * 1000
        dias = request.form.get('dias')
        flash = request.form.get('flash')
    #print ("Flash", flash)
    #print ("Dias", dias)
    fd = capture_picture(mycamera)
    exposure1 = Markup(
        get_exposure_info(mycamera) + "<br>" + get_white_balance(mycamera))
    img1 = base64.b64encode(fd.getvalue()).decode()
    settings.set()
    mysettings = "Camera: " + settings.str()
    if flash:
        set_flash(True)
    if dias:
        set_dias(True)
    warm_up()
    fd2 = capture_picture(mycamera)
    exposure2 = Markup(
        get_exposure_info(mycamera) + "<br>" + get_white_balance(mycamera) +
        " " + mysettings)
    img2 = base64.b64encode(fd2.getvalue()).decode()
    mycamera.close()
    set_flash(False)
    set_dias(False)
    return render_template('calibrate.html',
                           header="Calibrate",
                           img1=img1,
                           img2=img2,
                           exposure1=exposure1,
                           exposure2=exposure2)
Ejemplo n.º 3
0
def scan_cont_pictures(camera, quality=None):
    if quality is None:
        quality = 85
    j = 1
    stream = BytesIO()
    start = datetime.now()
    try:
        for i in camera.capture_continuous(stream,
                                           format='jpeg',
                                           quality=quality,
                                           use_video_port=True):  # pylint: disable=unused-variable
            j = j + 1
            stream.truncate()
            stream.seek(0)
            picture = stream.read()
            yield (b'--frame\r\n'
                   b'Content-Type: image/jpeg\r\n\r\n' + picture + b'\r\n')
            stream.seek(0)
    finally:
        stop = datetime.now()
        if _DEBUG:
            print(
                f"Vi lukker og slukker {j/((stop-start).total_seconds()):.2f} billeder/sek"
            )
            print(get_exposure_info(camera))
        camera.close()
        led_off()
    return stream
Ejemplo n.º 4
0
def p_picture():
    arg = "?" + get_set_led()
    camera = init_camera()
    warm_up()
    exposure = get_exposure_info(camera)
    camera.close()
    return render_template('picture.html', name="", exposure=exposure, arg=arg)
Ejemplo n.º 5
0
def u_picture():
    #?quality=85&dias=0&type=jpeg/png
    camera = init_camera()
    camera.resolution = (2592, 1944)
    pic_format = 'jpeg'
    pic_mime = 'image/jpeg'
    img_type = request.args.get('type', None)
    if img_type == 'png':
        pic_format = 'png'
        pic_mime = 'image/png'
    pic_quality = 85
    quality = request.args.get('quality', None)
    if quality:
        pic_quality = int(quality)
    size = request.args.get('size', None)
    if size:
        camera.resolution = (int(size), int(size))
    compensation = request.args.get('compensation', None)
    if compensation:
        camera.exposure_compensation = int(compensation)
    zoom = request.args.get('zoom', None)
    if zoom:
        res = myzoom(float(zoom))
        print("zoom", zoom, res)
        camera.zoom = res
    get_set_led()
    warm_up()
    if _DEBUG:
        print(get_exposure_info(camera))
    return send_file(get_picture(camera,
                                 format=pic_format,
                                 quality=pic_quality),
                     mimetype=pic_mime)
Ejemplo n.º 6
0
def get_picture_infoset(camera):
    # get picture and exposure info
    # used by /3d
    st1 = perf_counter()
    if TESTINFO:
        flash_exp = get_exposure_info_dict(camera)
    if _DEBUG:
        print ("Flash", get_exposure_info(camera))
    set_flash(False)
    set_dias(DIAS_LEVEL)
    fd2 = BytesIO()
    sleep(CAPTURE_DELAY)
    if TESTINFO:
        dias_exp = get_exposure_info_dict(camera)
    if _DEBUG:
        print ("Dias", get_exposure_info(camera))
    camera.capture(fd2, format='jpeg', use_video_port=True, quality=JPEG_QUALITY)
    fd2.truncate()
    fd2.seek(0)
    fix_exposure(camera)
    set_dias(False)
    sleep(CAPTURE_DELAY)
    if TESTINFO:
        dark_exp = get_exposure_info_dict(camera)
    if _DEBUG:
        print ("Dark", get_exposure_info(camera))
    fd3 = BytesIO()
    camera.capture(fd3, format='jpeg', use_video_port=True, quality=JPEG_QUALITY)
    fd3.truncate()
    fd3.seek(0)
    auto_exposure(camera)
    if TESTINFO:
        info = { "color": flash_exp, "dias": dias_exp, "nolight": dark_exp }
        #print(info)
        fdinfo = StringIO(json.dumps(info, indent=4))
        fileobj = [ ("dias.jpg",fd2),("nolight.jpg", fd3),("pict_info.json", fdinfo)]
    else:
        fileobj = [ ("dias.jpg",fd2),("nolight.jpg", fd3)]
    end = perf_counter()
    if _TIMING:
        print(f"Get_picture_infoset { end-st1 }")
    return fileobj
Ejemplo n.º 7
0
def cam3dias():
    # send a serie of pictures
    send_start()
    camera = init_camera()
    camera.resolution =(160,160)
    camera.framerate_range =(10,10)
    cam_settings = CameraSettings(camera)
    init_3d_camera(cam_settings)
    size = request.args.get('size', None)
    if size:
        camera.resolution =(int(size),int(size))
    print (get_exposure_info(camera))
    set_dias(False)
    set_flash(True)
    print (get_exposure_info(camera))
    warm_up()
    print (get_exposure_info(camera))
    warm_up()
    print (get_exposure_info(camera))
    warm_up()
    print (get_exposure_info(camera))

    return Response(get_dias(camera, 10),mimetype='multipart/x-mixed-replace; boundary=frame')
Ejemplo n.º 8
0
def cam():
    get_set_led()
    camera = init_camera()
    warm_up()
    if _DEBUG:
        print(get_exposure_info(camera))
    size = request.args.get('size', None)
    if size:
        camera.resolution = (int(size), int(size))
    max_frame = request.args.get('maxframerate', None)
    if max_frame:
        myrange = camera.framerate_range
        camera.framerate_range = (myrange.low, int(max_frame))
    quality = request.args.get('quality', None)
    if quality:
        quality = int(quality)
    return Response(scan_cont_pictures(camera, quality=quality),
                    mimetype='multipart/x-mixed-replace; boundary=frame')
Ejemplo n.º 9
0
def get_pictures(camera):
    number_pictures = NUMBER_PICTURES
    fd1 = BytesIO()
    i = 1
    pic_no = 1
    #sleep(CAPTURE_DELAY)
    start = datetime.now()
    if PICTURE_INTERVAL == 0:
        pic_modolu = 1
    else:
        pic_modolu = int(PICTURE_INTERVAL * 10)
    if _DEBUG:
        print("pic modolu", pic_modolu)
    try:
        while True:
            camera.capture(fd1, format='jpeg', use_video_port=True)
            fd1.truncate()
            fd1.seek(0)
            pic = fd1.read()
            yield (b'--frame\r\n'
                   b'Content-Type: image/jpeg\r\n\r\n' + pic + b'\r\n')
            fd1.seek(0)
            if i % pic_modolu == 0:
                #send_api_request_bg('save2d', url=COMPUTE_SERVER)
                params = {'pictureno': pic_no}
                post_file_object("save2d", fd1, post_data=params)
                #send_picture(fd1, pic_no)
                fd1.seek(0)
                pic_no = pic_no + 1
            i = i + 1
            if pic_no > number_pictures:
                break
            sleep(0)
    finally:
        stop = datetime.now()
        print(
            f"Vi lukker og slukker {i/((stop-start).total_seconds()):2.1f} Billeder/sek"
        )
        print(get_exposure_info(camera))
        camera.close()
        set_flash(False)
        send_api_request('stop2d', url=COMPUTE_SERVER)
Ejemplo n.º 10
0
def picture():
    # send one picture to API server
    camera = init_camera()
    camera.resolution = (640, 480)
    #camera.framerate_range =(10,25)
    size = request.args.get('size', None)
    if size:
        camera.resolution = (int(size), int(size))
    warm_up()
    fd = capture_picture(camera)
    expinfo = get_exposure_info(camera)
    camera.close()
    res = send_file_object(fd,
                           "2d.jpg",
                           data={
                               'folder': "testfolder",
                               'exposure': expinfo
                           })
    print(res)
    return Response(res)
Ejemplo n.º 11
0
def get_dias(camera, number_pictures=None):
    # used by /3dias
    if not number_pictures:
        number_pictures = NUMBER_PICTURES
    fd1 = BytesIO()
    i=1
    pic_no = 1
    start = datetime.now()
    if PICTURE_INTERVAL==0:
        pic_modolu=1
    else:
        pic_modolu = int(PICTURE_INTERVAL*10)
    try:
        while True:
            camera.capture(fd1, format='jpeg', use_video_port=True, quality=JPEG_QUALITY)
            fd1.truncate()
            fd1.seek(0)
            pic = fd1.read()
            yield (b'--frame\r\n'
                b'Content-Type: image/jpeg\r\n\r\n' + pic + b'\r\n')
            fd1.seek(0)
            if i % pic_modolu == 0:
                print (pic_no, get_exposure_info(camera))
                (fd2, fd3) = get_picture_set(camera)
                send_dias([fd1,fd2,fd3], pic_no)
                fd1.seek(0)
                pic_no = pic_no+1
                if pic_no>number_pictures:
                    break
            i=i+1
            sleep(0)
    finally:
        stop = datetime.now()
        if _DEBUG:
            print(f"Closing: {i/((stop-start).total_seconds()):2.1f} Billeder/sek")
        camera.close()
        led_off()
        send_stop()
Ejemplo n.º 12
0
def camera():
    sleeptime = 1.5
    os.makedirs("/tmp/calib", mode=0o777, exist_ok=True)
    mycamera = init_camera()
    #mycamera.resolution =(2592,1944)
    set_dias(0)
    set_flash(0)
    warm_up()
    if _DEBUG:
        print(get_camera_settings(mycamera))
    #normal
    mycamera.capture('/tmp/calib/color.png', use_video_port=False)
    if _DEBUG:
        print("Color", get_exposure_info(mycamera))
    mycamera.capture('/tmp/calib/color.jpg', use_video_port=False)
    write_picture_info("/tmp/calib/color.json",
                       get_picture_info_json(mycamera))
    #dias
    set_dias(1)
    sleep(sleeptime)
    mycamera.capture('/tmp/calib/dias.png', use_video_port=False)
    if _DEBUG:
        print("Dias:", get_exposure_info(mycamera))
    mycamera.capture('/tmp/calib/dias.jpg', use_video_port=False)
    write_picture_info("/tmp/calib/dias.json", get_picture_info_json(mycamera))
    #full flash
    set_dias(0)
    set_flash(1)
    sleep(sleeptime)
    mycamera.capture('/tmp/calib/flash.png', use_video_port=False)
    if _DEBUG:
        print("Flash", get_exposure_info(mycamera))
    mycamera.capture('/tmp/calib/flash.jpg', use_video_port=False)
    write_picture_info("/tmp/calib/flash.json",
                       get_picture_info_json(mycamera))
    fix_exposure(mycamera)
    #dark
    set_flash(0)
    sleep(sleeptime)
    mycamera.capture('/tmp/calib/nolight.png', use_video_port=False)
    if _DEBUG:
        print("NoLight", get_exposure_info(mycamera))
    mycamera.capture('/tmp/calib/nolight.jpg', use_video_port=False)
    write_picture_info("/tmp/calib/nolight.json",
                       get_picture_info_json(mycamera))
    auto_exposure(mycamera)
    #low flash
    set_dias(0)
    set_flash(0.1)
    sleep(sleeptime)
    mycamera.capture('/tmp/calib/flash01.png', use_video_port=False)
    if _DEBUG:
        print("Flash01", get_exposure_info(mycamera))
    mycamera.capture('/tmp/calib/flash01.jpg', use_video_port=False)
    write_picture_info("/tmp/calib/flash01.json",
                       get_picture_info_json(mycamera))
    fix_exposure(mycamera)
    set_flash(0)
    sleep(sleeptime)
    mycamera.capture('/tmp/calib/nolight01.png', use_video_port=False)
    mycamera.close()
    filelist = [
        '/tmp/calib/color.png',
        '/tmp/calib/color.jpg',
        '/tmp/calib/color.json',
        '/tmp/calib/dias.png',
        '/tmp/calib/dias.jpg',
        '/tmp/calib/dias.json',
        '/tmp/calib/flash.png',
        '/tmp/calib/flash.jpg',
        '/tmp/calib/flash.json',
        '/tmp/calib/nolight.png',
        '/tmp/calib/nolight.jpg',
        '/tmp/calib/nolight.json',
        '/tmp/calib/flash01.png',
        '/tmp/calib/flash01.jpg',
        '/tmp/calib/flash01.json',
        #'/tmp/calib/nolight01.png', '/tmp/calib/nolight01.jpg', '/tmp/calib/nolight01.json'
    ]
    res = send_files(filelist,
                     post_data={
                         "cmd": "calcamera",
                         "sice": 160,
                         "zoom": ZOOM
                     })
    if res:
        return res
    print("det gik skidt", res)
    return '{ "result": "false"}'