Ejemplo n.º 1
0
def calibrate(imagedir, cbrow, cbcol):
    nimages = 0
    datapoints = []
    im_dims = (0,0)
    # prepare object points, like (0,0,0), (1,0,0), (2,0,0) ....,(6,5,0)
    objp = numpy.zeros((cbrow * cbcol, 3), numpy.float32)
    objp[:, :2] = numpy.mgrid[0:cbcol, 0:cbrow].T.reshape(-1, 2)
    # Arrays to store object points and image points from all the images.
    objpoints = [] # 3d point in real world space
    imgpoints = [] # 2d points in image plane.

    files = file_list(imagedir, ['jpg', 'jpeg', 'png'])
    for f in files:
        colour = cv2.imread(f)
        grey = cv2.cvtColor(colour, cv2.COLOR_BGR2GRAY)
        ret, corners = cv2.findChessboardCorners(grey, (cbcol, cbrow), flags=cv2.CALIB_CB_ADAPTIVE_THRESH)
        
        if (ret):
            print('using ' + f)
            cv2.cornerSubPix(grey,corners,(11,11),(-1,-1),(cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.01))
            objpoints.append(objp)
            imgpoints.append(corners)
            im_dims = grey.shape[:2]

    if len(imgpoints) == 0:
        print("Not enough good quality images. Aborting")
        return
    
    ret, K, D, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, grey.shape[::-1], None, None)

    # storing results using CameraParams
    C = CameraParams(lens=lens, sensorwidth=sensorwidth, xresolution=im_dims[1], yresolution=im_dims[0])
    C.setParams(K, D)
    C.save(os.path.join(imagedir, "paramsout.json"))
    print("Saved params in " + os.path.join(imagedir, "paramsout.json"))
Ejemplo n.º 2
0
Archivo: flea.py Proyecto: jaxiano/cuav
def load_camera_settings():
	global image_height, image_width

        c_params = CameraParams(lens=4.0, xresolution=0, yresolution=0)
        if os.path.exists(config_file):
            c_params.load(config_file)
	    image_height = c_params.yresolution
	    image_width = c_params.xresolution
            print("Loaded %s" % config_file)
        else:
            print("Warning: %s not found. Using default resolution height=%i and width=%i" % (config_file,image_height,image_width))
Ejemplo n.º 3
0
    def getCameraWidth(self, alt):
        '''Using the camera parameters, with the width of the
        ground strip that the camera can see from a particular altitude'''

        #use the camera parameters
        c_params = CameraParams(lens=4.0)
        # load camera params and get the width of an image on the ground
        path = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', 'data', 'chameleon1_arecont0.json')
        c_params.load(path)
        aov = math.degrees(2.0*math.atan((c_params.sensorwidth/1000.0)/(2.0*c_params.lens/1000.0)))
        groundWidth = 2.0*alt*math.tan(math.radians(aov/2))

        return groundWidth
Ejemplo n.º 4
0
def load_camera_settings():
    global image_height, image_width

    c_params = CameraParams(lens=4.0, xresolution=0, yresolution=0)
    if os.path.exists(config_file):
        c_params.load(config_file)
        image_height = c_params.yresolution
        image_width = c_params.xresolution
        print("Loaded %s" % config_file)
    else:
        print(
            "Warning: %s not found. Using default resolution height=%i and width=%i"
            % (config_file, image_height, image_width))
Ejemplo n.º 5
0
    def getCameraWidth(self, alt):
        '''Using the camera parameters, with the width of the
        ground strip that the camera can see from a particular altitude'''

        #use the camera parameters
        c_params = CameraParams(lens=4.0)
        # load camera params and get the width of an image on the ground
        path = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..',
                            'data', 'chameleon1_arecont0.json')
        c_params.load(path)
        aov = math.degrees(2.0 * math.atan(
            (c_params.sensorwidth / 1000.0) / (2.0 * c_params.lens / 1000.0)))
        groundWidth = 2.0 * alt * math.tan(math.radians(aov / 2))

        return groundWidth
Ejemplo n.º 6
0
def test_JoeLog_JoeIterator():
    joelog = cuav_joe.JoeLog(os.path.join('.', 'joe.log'), False)
    regions = []
    frame_time = 1478954763.0
    C = CameraParams(lens=4.0,
                     sensorwidth=5.0,
                     xresolution=1024,
                     yresolution=768)
    regions.append(cuav_region.Region(10, 10, 25, 23, None, scan_score=450))
    regions.append(cuav_region.Region(200, 205, 252, 236, None,
                                      scan_score=420))
    pos = mav_position.MavPosition(-30, 145, 34.56, 20, -56.67, 345,
                                   frame_time)
    joelog.add_regions(frame_time, regions, pos, 'img2017111312451230Z.png')

    joeread = cuav_joe.JoeIterator(os.path.join('.', 'joe.log'))

    joeret = joeread.getjoes()

    assert len(joeret) == 2
    assert joeret[
        0] == "JoePosition(lat=-30.000235 lon=144.999639 MavPosition(pos -30.000000 145.000000 alt=34.6 roll=20.0 pitch=-56.7 yaw=345.0) img2017111312451230Z.png None (10, 10, 25, 23) latlon=(-30.000235126851315, 144.9996388367703) score=None Sat Nov 12 23:46:03 2016 2016111212460300Z)" or "JoePosition(lat=-30.000235 lon=144.999639 MavPosition(pos -30.000000 145.000000 alt=34.6 roll=20.0 pitch=-56.7 yaw=345.0) img2017111312451230Z.png None (10, 10, 25, 23) latlon=(-30.000235126851315, 144.9996388367703) score=None Sat Nov 12 12:46:03 2016 2016111212460300Z)"
    assert joeret[
        1] == "JoePosition(lat=-30.000367 lon=144.999711 MavPosition(pos -30.000000 145.000000 alt=34.6 roll=20.0 pitch=-56.7 yaw=345.0) img2017111312451230Z.png None (200, 205, 252, 236) latlon=(-30.000366794010567, 144.9997107272955) score=None Sat Nov 12 23:46:03 2016 2016111212460300Z)" or "JoePosition(lat=-30.000367 lon=144.999711 MavPosition(pos -30.000000 145.000000 alt=34.6 roll=20.0 pitch=-56.7 yaw=345.0) img2017111312451230Z.png None (200, 205, 252, 236) latlon=(-30.000366794010567, 144.9997107272955) score=None Sat Nov 12 12:46:03 2016 2016111212460300Z)"

    os.remove(os.path.join('.', 'joe.log'))
Ejemplo n.º 7
0
def dewarp(imagedir):
    # Loading from json file
    C = CameraParams.fromfile(os.path.join(imagedir, "params.json"))
    K = C.K
    D = C.D
    print("Loaded camera parameters from " +
          os.path.join(imagedir, "params.json"))

    for f in file_list(imagedir, ['jpg', 'jpeg', 'png']):
        print(f)
        colour = cv2.imread(f)
        grey = cv2.cvtColor(colour, cv2.COLOR_BGR2GRAY)

        h, w = grey.shape[:2]
        newcameramtx, roi = cv2.getOptimalNewCameraMatrix(
            K, D, (w, h), 1, (w, h))
        mapx, mapy = cv2.initUndistortRectifyMap(K, D, None, newcameramtx,
                                                 (w, h), 5)
        dewarped = cv2.remap(grey, mapx, mapy, cv2.INTER_LINEAR)

        x, y, w, h = roi
        dewarped = dewarped[y:y + h, x:x + w]
        grey = cv2.resize(grey, (0, 0), fx=0.5, fy=0.5)
        dewarped = cv2.resize(dewarped, (0, 0), fx=0.5, fy=0.5)

        cv2.imshow("Original", grey)
        cv2.imshow("Dewarped", dewarped)
        cv2.waitKey(-1)
Ejemplo n.º 8
0
def dewarp(imagedir):
    # Loading from json file
    C = CameraParams.fromfile(os.path.join(imagedir, "params.json"))
    K = C.K
    D = C.D
    print("Loaded camera parameters from " + os.path.join(imagedir, "params.json"))

    for f in file_list(imagedir, ['jpg', 'jpeg', 'png']):
        print(f)
        colour = cv2.imread(f)
        grey = cv2.cvtColor(colour, cv2.COLOR_BGR2GRAY)

        h, w = grey.shape[:2]
        newcameramtx, roi=cv2.getOptimalNewCameraMatrix(K, D, (w,h), 1, (w,h))
        mapx, mapy = cv2.initUndistortRectifyMap(K, D, None, newcameramtx, (w,h), 5)
        dewarped = cv2.remap(grey, mapx, mapy, cv2.INTER_LINEAR)

        x, y, w, h = roi
        dewarped = dewarped[y:y+h, x:x+w]
        grey = cv2.resize(grey, (0,0), fx=0.5, fy=0.5) 
        dewarped = cv2.resize(dewarped, (0,0), fx=0.5, fy=0.5) 

        cv2.imshow("Original", grey )
        cv2.imshow("Dewarped", dewarped)
        cv2.waitKey(-1)
Ejemplo n.º 9
0
def test_do_calibrate():
    dirry = os.path.join('.', 'cuav', 'data', 'ChameleonArecort')
    outfile = os.path.join('.', 'cuav', 'data', 'ChameleonArecort', 'paramsout.json')
    calibrate.calibrate(dirry, 10, 7)
    assert os.path.isfile(outfile)
    C = CameraParams.fromfile(outfile)
    assert C is not None
    os.remove(outfile)
Ejemplo n.º 10
0
def gps_position_from_image_region(region, pos, width=1280, height=960, C=CameraParams(), altitude=None):
    '''
    return a GPS position in an image given a MavPosition object
    and an image region tuple
    '''
    if pos is None:
        return None
    x = (region.x1+region.x2)*0.5
    y = (region.y1+region.y2)*0.5
    return gps_position_from_xy(x, y, pos, C=C, altitude=altitude)
Ejemplo n.º 11
0
 def check_camera_parms(self):
     '''check for change in camera parameters'''
     #dir is rel to this python file:
     if self.camera_settings.camparms is None:
         return False
     camfiletxt = pkg_resources.resource_string("cuav", self.camera_settings.camparms)
     try:
         self.c_params = CameraParams.fromstring(camfiletxt)
         return True
     except:
         return False
Ejemplo n.º 12
0
 def check_camera_parms(self):
     '''check for change in camera parameters'''
     #dir is rel to this python file:
     if self.camera_settings.camparms is None:
         return False
     camfiletxt = pkg_resources.resource_string(
         "cuav", self.camera_settings.camparms)
     try:
         self.c_params = CameraParams.fromstring(camfiletxt)
         return True
     except:
         return False
Ejemplo n.º 13
0
def test_pixel_position_matt():
    C = CameraParams(lens=4.0,
                     sensorwidth=5.0,
                     xresolution=1024,
                     yresolution=768)
    (east, north) = pixel_position_matt(100, 100, 123, 0.1, 2, 0, C)
    assert abs(-67.3798 - east) < 0.001
    assert abs(43.6719 - north) < 0.001

    (east, north) = pixel_position_matt(0, 130, 57, 0.1, 2, 0, C)
    assert abs(-38.4761 - east) < 0.001
    assert abs(18.188 - north) < 0.001
Ejemplo n.º 14
0
def test_pixel_coordinates():
    C = CameraParams(lens=4.0,
                     sensorwidth=5.0,
                     xresolution=1024,
                     yresolution=800)
    (lat, lon) = pixel_coordinates(512, 400, -50, 145, 123, 0, 0, 90, C)
    assert abs(-50 - lat) < 0.00001
    assert abs(145 - lon) < 0.00001

    (lat, lon) = pixel_coordinates(200, 100, -50, 145, 123, 2, 5, 50, C)
    assert abs(-49.99928 - lat) < 0.00001
    assert abs(145.00001 - lon) < 0.00001
Ejemplo n.º 15
0
def test_meters_per_pixel():
    C = CameraParams(lens=4.0,
                     sensorwidth=5.0,
                     xresolution=1024,
                     yresolution=800)
    frame_time = 1478954763.0
    pos = mav_position.MavPosition(-50, 145, 120, 0, 0, 90, frame_time)
    ret = meters_per_pixel(pos, C)
    assert abs(0.1463 - ret) < 0.001

    pos = mav_position.MavPosition(-50, 145, 85, 3, 1, 45, frame_time)
    ret = meters_per_pixel(pos, C)
    assert abs(0.1041 - ret) < 0.001
Ejemplo n.º 16
0
def test_cam_params_dict():
    C = CameraParams(lens=4.0,
                     sensorwidth=5.0,
                     xresolution=3000,
                     yresolution=4000)
    C.setParams([[1, 2, 3], [4, 5, 6]], [0, 6, 7, 8])
    Cdict = C.todict()
    C2dict = CameraParams.fromdict(Cdict)
    assert C.todict() == C2dict.todict()
    assert numpy.array_equal(C.K, C2dict.K)
    assert numpy.array_equal(C.D, C2dict.D)
Ejemplo n.º 17
0
def test_cam_params_dict():
    C = CameraParams(lens=4.0, sensorwidth=5.0, xresolution=3000, yresolution=4000)
    C.setParams([[1, 2, 3], [4, 5, 6]], [0, 6, 7, 8])
    Cdict = C.todict()
    C2dict = CameraParams.fromdict(Cdict)
    assert C.todict() == C2dict.todict()
    assert numpy.array_equal(C.K, C2dict.K)
    assert numpy.array_equal(C.D, C2dict.D)
Ejemplo n.º 18
0
def test_cam_params_txt():
    C = CameraParams(lens=4.0,
                     sensorwidth=5.0,
                     xresolution=1280,
                     yresolution=960)
    C.setParams([[1, 2, 3], [4, 5, 6]], [0, 6, 7, 8])
    C.save('foo.txt')
    C2 = CameraParams.fromfile('foo.txt')
    assert str(C) == str(C2)
    assert numpy.array_equal(C.K, C2.K)
    assert numpy.array_equal(C.D, C2.D)
    os.remove('foo.txt')
Ejemplo n.º 19
0
def test_cam_params_txt():
    C = CameraParams(lens=4.0, sensorwidth=5.0, xresolution=1280, yresolution=960)
    C.setParams([[1, 2, 3], [4, 5, 6]], [0, 6, 7, 8])
    C.save('foo.txt')
    C2 = CameraParams.fromfile('foo.txt')
    assert str(C) == str(C2)
    assert numpy.array_equal(C.K, C2.K)
    assert numpy.array_equal(C.D, C2.D)
    os.remove('foo.txt')
Ejemplo n.º 20
0
    def __init__(self,
                 slipmap,
                 grid_width=20,
                 grid_height=20,
                 thumb_size=35,
                 C=CameraParams(),
                 camera_settings=None,
                 image_settings=None,
                 start_menu=False):
        self.thumb_size = thumb_size
        self.width = grid_width * thumb_size
        self.height = grid_height * thumb_size
        self.mosaic = cv.CreateImage((self.height, self.width), 8, 3)
        cuav_util.zero_image(self.mosaic)
        self.display_regions = grid_width * grid_height
        self.regions = []
        self.regions_sorted = []
        self.page = 0
        self.sort_type = 'Time'
        self.images = []
        self.current_view = 0
        self.last_view_latlon = None
        self.view_filename = None
        self.full_res = False
        self.boundary = []
        self.displayed_image = None
        self.last_click_position = None
        self.c_params = C
        self.camera_settings = camera_settings
        self.image_settings = image_settings
        self.start_menu = start_menu
        self.has_started = not start_menu
        import wx
        self.image_mosaic = mp_image.MPImage(title='Mosaic',
                                             mouse_events=True,
                                             key_events=True,
                                             auto_size=True)
        self.slipmap = slipmap
        self.selected_region = 0

        self.view_image = None
        self.brightness = 1

        # dictionary of image requests, contains True if fullres image is wanted
        self.image_requests = {}

        self.slipmap.add_callback(functools.partial(self.map_callback))

        self.add_menus()
Ejemplo n.º 21
0
def test_gps_position_from_image_region():
    frame_time = 1478954763.0
    pos = mav_position.MavPosition(-50, 145, 120, 0, 0, 90, frame_time)
    region = cuav_region.Region(10, 10, 25, 23, None, scan_score=450)
    C = CameraParams(lens=4.0,
                     sensorwidth=5.0,
                     xresolution=1024,
                     yresolution=800)
    (lat, lon) = gps_position_from_image_region(region,
                                                pos,
                                                width=1024,
                                                height=800,
                                                C=C,
                                                altitude=None)
    assert abs(-49.99934 - lat) < 0.00001
    assert abs(145.00078 - lon) < 0.00001
Ejemplo n.º 22
0
def gps_position_from_xy(x, y, pos, C=CameraParams(), altitude=None):
    '''
    return a GPS position in an image given a MavPosition object
    and an image x,y position
    '''
    if pos is None:
            return None
    width=C.xresolution
    height=C.yresolution
    # assume the image came from the same camera but may no longer be original size
    scale_x = float(C.xresolution)/float(width)
    scale_y = float(C.yresolution)/float(height)
    x *= scale_x
    y *= scale_y
    if altitude is None:
	    altitude = pos.altitude
    return pixel_coordinates(x, y, pos.lat, pos.lon, altitude,
                             pos.pitch, pos.roll, pos.yaw, C)
Ejemplo n.º 23
0
 def __init__(self, mpstate):
     super(CameraViewModule, self).__init__(mpstate, "cameraview")
     self.add_command('cameraview', self.cmd_cameraview, "camera view")
     self.roll = 0
     self.pitch = 0
     self.yaw = 0
     self.mount_roll = 0
     self.mount_pitch = 0
     self.mount_yaw = 0
     self.height = 0
     self.lat = 0
     self.lon = 0
     self.home_height = 0
     self.hdg = 0
     self.elevation_model = mp_elevation.ElevationModel()
     self.camera_params = CameraParams() # TODO how to get actual camera params
     self.view_settings = mp_settings.MPSettings(
         [ ('r', float, 0.5),
           ('g', float, 0.5),
           ('b', float, 1.0),
         ])
     self.update_col()
Ejemplo n.º 24
0
def test_gps_position_from_xy():
    C = CameraParams(lens=4.0,
                     sensorwidth=5.0,
                     xresolution=1024,
                     yresolution=800)
    frame_time = 1478954763.0
    pos = mav_position.MavPosition(-50, 145, 120, 0, 0, 90, frame_time)
    (lat, lon) = gps_position_from_xy(512,
                                      400,
                                      pos,
                                      C=C,
                                      altitude=120,
                                      shape=None)
    assert abs(-50 - lat) < 0.00001
    assert abs(145 - lon) < 0.00001

    (lat, lon) = gps_position_from_xy(200,
                                      100,
                                      pos,
                                      C=C,
                                      altitude=120,
                                      shape=None)
    assert abs(-49.999589 - lat) < 0.00001
    assert abs(145.000614 - lon) < 0.00001
Ejemplo n.º 25
0
def calibrate(imagedir, cbrow, cbcol):
    nimages = 0
    datapoints = []
    im_dims = (0, 0)
    # prepare object points, like (0,0,0), (1,0,0), (2,0,0) ....,(6,5,0)
    objp = numpy.zeros((cbrow * cbcol, 3), numpy.float32)
    objp[:, :2] = numpy.mgrid[0:cbcol, 0:cbrow].T.reshape(-1, 2)
    # Arrays to store object points and image points from all the images.
    objpoints = []  # 3d point in real world space
    imgpoints = []  # 2d points in image plane.

    files = file_list(imagedir, ['jpg', 'jpeg', 'png'])
    for f in files:
        colour = cv2.imread(f)
        grey = cv2.cvtColor(colour, cv2.COLOR_BGR2GRAY)
        ret, corners = cv2.findChessboardCorners(
            grey, (cbcol, cbrow), flags=cv2.CALIB_CB_ADAPTIVE_THRESH)

        if (ret):
            print('using ' + f)
            cv2.cornerSubPix(
                grey, corners, (11, 11), (-1, -1),
                (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.01))
            objpoints.append(objp)
            imgpoints.append(corners)
            im_dims = grey.shape[:2]

    if len(imgpoints) == 0:
        print("Not enough good quality images. Aborting")
        return

    ret, K, D, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints,
                                                  grey.shape[::-1], None, None)

    # storing results using CameraParams
    C = CameraParams(lens=lens,
                     sensorwidth=sensorwidth,
                     xresolution=im_dims[1],
                     yresolution=im_dims[0])
    C.setParams(K, D)
    C.save(os.path.join(imagedir, "paramsout.json"))
    print("Saved params in " + os.path.join(imagedir, "paramsout.json"))
Ejemplo n.º 26
0
def test_Mosaic():
    #slipmap = mp_slipmap.MPSlipMap(service='GoogleSat', elevation=True, title='Map')
    #mocked_slipmap.return_value = 1
    #monkeypatch.setattr('slipmap', lambda x: 1)
    mocked_slipmap = mock.MagicMock(return_value=1)
    C_params = CameraParams(lens=4.0, sensorwidth=5.0, xresolution=1280, yresolution=960)
    mosaic = cuav_mosaic.Mosaic(mocked_slipmap, C=C_params)
    mosaic.set_mosaic_size((200, 200))
    assert mosaic.mosaic.shape == (175, 175, 3)
    
    f = os.path.join(os.getcwd(), 'tests', 'testdata', 'raw2016111223465120Z.png')
    img = cv2.imread(f)
    pos = mav_position.MavPosition(-30, 145, 34.56, 20, -56.67, 345, frame_time=1478994408.76)
    regions = []
    regions.append(cuav_region.Region(1020, 658, 1050, 678, (30, 30), scan_score=20))
    regions.append(cuav_region.Region(30, 54, 50, 74, (20, 20), scan_score=15))
    regions.append(cuav_region.Region(30, 54, 55, 79, (25, 25), scan_score=10))
    for i in range(40):
        regions.append(cuav_region.Region(200, 600, 220, 620, (20, 20), scan_score=45))
    composite = cuav_region.CompositeThumbnail(img, regions)
    thumbs = cuav_mosaic.ExtractThumbs(composite, len(regions))
    mosaic.add_regions(regions, thumbs, f, pos)
    mosaic.add_image(1478994408.76, f, pos)
    
    mosaic.show_region(0)

    mosaic.view_imagefile(f)
    
    
    assert mosaic.find_image_idx(f) == 0
    mosaic.view_imagefile_by_idx(0)
    
    mocked_key = mock.MagicMock(return_value=1)
    mocked_key.objkey = "region 1"
    assert mosaic.show_selected(mocked_key) == True
    
    mosaic.show_closest((-30, 145), mocked_key)
    
    mosaic.view_image.terminate()
    
    #mosaic.map_menu_callback
    
    #mosaic.map_callback
    
    OBC_boundary = cuav_util.polygon_load(os.path.join(os.getcwd(), 'tests', 'testdata', 'OBC_boundary.txt'))
    mosaic.set_boundary(OBC_boundary)
    
    mosaic.change_page(1)
    mosaic.hide_page()
    assert len(mosaic.regions_sorted) == 25
    mosaic.unhide_all()
    assert len(mosaic.regions_sorted) == 43
    
    for i in ['Score', 'ScoreReverse', 'Distinctiveness', 'Whiteness', 'Time']:
        mosaic.sort_type = i
        mosaic.re_sort()
    
    #mosaic.menu_event
    
    assert mosaic.started() == True
    
    mosaic.popup_show_image(mosaic.regions[2])
    
    mosaic.popup_fetch_image(mosaic.regions[2], 'fetchImageFull')
    
    assert len(mosaic.get_image_requests()) == 1
    
    mosaic.view_image.terminate()
    
    #mosaic.menu_event_view
    
    mocked_pos = mock.MagicMock(return_value=1)
    mocked_pos.x = 10
    mocked_pos.y = 10
    assert mosaic.pos_to_region(mocked_pos) == mosaic.regions[0]
    
    assert mosaic.objkey_to_region(mocked_key) == mosaic.regions[1]
    
    #mosaic.mouse_event
    
    #mosaic.mouse_event_view
    
    mosaic.key_event(1)
    
    assert mosaic.region_on_page(2, 0) == True
    assert mosaic.region_on_page(2000, 20) == False
    
    mosaic.mouse_region = mosaic.regions[0]
    mosaic.display_mosaic_region(0)
    
    mosaic.redisplay_mosaic()
    
    assert mosaic.make_thumb(img, regions[0], 8).shape == (8, 8, 3)
    assert mosaic.make_thumb(img, regions[0], 30).shape == (30, 30, 3)
    
    mosaic.tag_image(1478994408.76)
    
    #mosaic.check_events
    
    mosaic.image_mosaic.terminate()
Ejemplo n.º 27
0
    def __init__(self):
        self.running = False
        self.unload = threading.Event()
        self.unload.clear()

        self.capture_thread = None
        self.save_thread = None
        self.scan_thread1 = None
        self.scan_thread2 = None
        self.transmit_thread = None
        self.view_thread = None

        self.settings = mp_settings.MPSettings(
            [
                ("depth", int, 8),
                ("gcs_address", str, None),
                ("gcs_view_port", int, 7543),
                ("bandwidth", int, 40000),
                ("bandwidth2", int, 2000),
                ("capture_brightness", int, 150),
                ("gamma", int, 950),
                ("brightness", float, 1.0),
                ("quality", int, 75),
                ("save_pgm", int, 1),
                ("transmit", int, 1),
                ("roll_stabilised", int, 1),
                ("minscore", int, 75),
                ("minscore2", int, 500),
                ("altitude", int, None),
                ("send1", int, 1),
                ("send2", int, 1),
                ("maxqueue1", int, None),
                ("maxqueue2", int, 30),
                ("thumbsize", int, 60),
                ("packet_loss", int, 0),
                ("gcs_slave", str, None),
                ("filter_type", str, "simple"),
                ("fullres", int, 0),
            ]
        )

        self.capture_count = 0
        self.scan_count = 0
        self.error_count = 0
        self.error_msg = None
        self.region_count = 0
        self.fps = 0
        self.scan_fps = 0
        self.cam = None
        self.save_queue = Queue.Queue()
        self.scan_queue = Queue.Queue()
        self.transmit_queue = Queue.Queue()
        self.viewing = False

        self.c_params = CameraParams(lens=4.0)
        self.jpeg_size = 0
        self.xmit_queue = 0
        self.xmit_queue2 = 0
        self.efficiency = 1.0

        self.last_watch = 0
        self.frame_loss = 0
        self.boundary = None
        self.boundary_polygon = None

        self.bandwidth_used = 0
        self.rtt_estimate = 0
        self.bsocket = None
        self.bsend2 = None
        self.bsend_slave = None

        # setup directory for images
        self.camera_dir = os.path.join(os.path.dirname(mpstate.logfile_name), "camera")
        cuav_util.mkdir_p(self.camera_dir)

        self.mpos = mav_position.MavInterpolator(backlog=5000, gps_lag=0.3)
        self.joelog = cuav_joe.JoeLog(os.path.join(self.camera_dir, "joe.log"), append=mpstate.continue_mode)
        # load camera params
        path = os.path.join(
            os.path.dirname(os.path.realpath(__file__)), "..", "..", "..", "cuav", "data", "chameleon1_arecont0.json"
        )
        self.c_params.load(path)
Ejemplo n.º 28
0
    def __init__(self, slipmap,
                 grid_width=20, grid_height=20, thumb_size=35, C=CameraParams(),
                 camera_settings = None,
                 image_settings = None,
                 start_menu=False,
                 classify=None):
        self.thumb_size = thumb_size
        self.width = grid_width * thumb_size
        self.height = grid_height * thumb_size
        self.mosaic = cv.CreateImage((self.height,self.width),8,3)
        cuav_util.zero_image(self.mosaic)
        self.display_regions = grid_width*grid_height
        self.regions = []
        self.regions_sorted = []
        self.regions_hidden = set()
        self.mouse_region = None
        self.ridx_by_frame_time = {}
        self.page = 0
        self.sort_type = 'Time'
        self.images = []
        self.current_view = 0
        self.last_view_latlon = None
        self.view_filename = None
        self.full_res = False
        self.boundary = []
        self.displayed_image = None
        self.last_click_position = None
        self.c_params = C
        self.camera_settings = camera_settings
        self.image_settings = image_settings
        self.start_menu = start_menu
        self.classify = classify
        self.has_started = not start_menu
        import wx
        self.image_mosaic = mp_image.MPImage(title='Mosaic', 
                                             mouse_events=True,
                                             key_events=True,
                                             auto_size=False,
                                             report_size_changes=True)
        self.slipmap = slipmap
        self.selected_region = 0

        self.view_image = None
        self.brightness = 1

        # dictionary of image requests, contains True if fullres image is wanted
        self.image_requests = {}

        self.slipmap.add_callback(functools.partial(self.map_callback))

        if classify:
            import lxml.objectify, lxml.etree
            with open(classify) as f:
                categories = lxml.objectify.fromstring(f.read())
                cat_names = set()
                self.categories = []
                try:
                    for c in categories.category:
                        self.categories.append((c.get('shortcut') or '', c.text))
                        if c.text in cat_names:
                            print 'WARNING: category name',c.text,'used more than once'
                        else:
                            cat_names.add(c.text)
                except AttributeError as ex:
                    print ex
                    print 'failed to load any categories for classification'
            self.region_class = lxml.objectify.E.regions()

        self.add_menus()
Ejemplo n.º 29
0
    def __init__(self):
        self.running = False
        self.unload = threading.Event()
        self.unload.clear()

        self.capture_thread = None
        self.save_thread = None
        self.scan_thread1 = None
        self.scan_thread2 = None
        self.transmit_thread = None
        self.view_thread = None

        self.settings = mp_settings.MPSettings(
            [ ('depth', int, 8),
              ('gcs_address', str, None),
              ('gcs_view_port', int, 7543),
              ('bandwidth',  int, 40000),
              ('bandwidth2', int, 2000),
              ('capture_brightness', int, 150),
              ('gamma', int, 950),
              ('brightness', float, 1.0),
              ('quality', int, 75),
              ('save_pgm', int, 1),
              ('transmit', int, 1),
              ('roll_stabilised', int, 1),
              ('minscore', int, 75),
              ('minscore2', int, 500),
              ('altitude', int, None),
              ('send1', int, 1),
              ('send2', int, 1),
              ('maxqueue1', int, None),
              ('maxqueue2', int, 30),
              ('thumbsize', int, 60),
              ('packet_loss', int, 0),             
              ('gcs_slave', str, None)  
              ]
            )

        self.capture_count = 0
        self.scan_count = 0
        self.error_count = 0
        self.error_msg = None
        self.region_count = 0
        self.fps = 0
        self.scan_fps = 0
        self.cam = None
        self.save_queue = Queue.Queue()
        self.scan_queue = Queue.Queue()
        self.transmit_queue = Queue.Queue()
        self.viewing = False
        
        self.c_params = CameraParams(lens=4.0)
        self.jpeg_size = 0
        self.xmit_queue = 0
        self.xmit_queue2 = 0
        self.efficiency = 1.0

        self.last_watch = 0
        self.frame_loss = 0
        self.boundary = None
        self.boundary_polygon = None

        self.bandwidth_used = 0
        self.rtt_estimate = 0
        self.bsocket = None
        self.bsend2 = None
        self.bsend_slave = None
        
        # setup directory for images
        self.camera_dir = os.path.join(os.path.dirname(mpstate.logfile_name),
                                      "camera")
        cuav_util.mkdir_p(self.camera_dir)

        self.mpos = mav_position.MavInterpolator(backlog=5000, gps_lag=0.3)
        self.joelog = cuav_joe.JoeLog(os.path.join(self.camera_dir, 'joe.log'), append=mpstate.continue_mode)
        # load camera params
        path = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', '..', '..',
                            'cuav', 'data', 'chameleon1_arecont0.json')
        self.c_params.load(path)