Esempio n. 1
0
def main():
    camera = gbv.USBCamera(0)
    camera.set_exposure(-5)
    window = gbv.CameraWindow('feed', camera)
    window.open()
    while True:
        frame = window.show_and_get_frame()
        k = window.last_key_pressed
        if k == 'r':
            bbox = cv2.selectROI('feed', frame)
            thr = gbv.median_threshold(frame, stdv, bbox, 'HSV')
            break
    cv2.destroyAllWindows()

    print(thr)

    original = gbv.FeedWindow(window_name='original')
    after_proc = gbv.FeedWindow(window_name='after threshold', drawing_pipeline=thr)

    original.open()
    after_proc.open()
    while True:
        ok, frame = camera.read()
        if not original.show_frame(frame):
            break
        if not after_proc.show_frame(frame):
            break

    original.close()
    after_proc.close()
def main():
    camera = gbv.USBCamera(0, gbv.UNKNOWN_CAMERA)
    #camera.set_exposure(-1)
    cv2.namedWindow('window', cv2.WINDOW_FREERATIO)
    ok, frame = camera.read()
    while ok:
        ok, frame = camera.read()
        cv2.imshow('window', frame)

        k = chr(cv2.waitKey(1) & 0xFF)
        if k == 'r':
            bbox = cv2.selectROI('window', frame)
            thr = gbv.median_threshold(frame, stdv, bbox, 'HSV')
            break
    cv2.destroyAllWindows()

    print(thr)

    original = gbv.FeedWindow(window_name='original')
    after_proc = gbv.FeedWindow(window_name='after threshold', drawing_pipeline=thr + gbv.Erode(3) + gbv.Dilate(3))

    original.open()
    after_proc.open()
    while True:
        ok, frame = camera.read()
        if not original.show_frame(frame):
            break
        if not after_proc.show_frame(frame):
            break

    original.close()
    after_proc.close()
Esempio n. 3
0
def main():
    camera = gbv.USBCamera(0)
    find_fuel = gbv.CircleFinder(FUEL_THRESHOLD, FUEL, contour_min_area=1000)
    fuel_follower = None
    window = gbv.FeedWindow('follow')
    window.open()
    ok = True
    found_fuel = False
    tracker = gbv.Tracker('MEDIANFLOW')
    while ok:
        ok, frame = camera.read()
        all_fuels = find_fuel.find_shapes(frame)
        if (not found_fuel) and len(all_fuels) > 0:
            nearest_fuel = all_fuels[0]
            fuel_follower = gbv.ContinuesCircle(shape=nearest_fuel,
                                                frame=frame,
                                                tracker=tracker)
            found_fuel = True
        if found_fuel:
            for check in all_fuels:
                if fuel_follower.update(frame=frame, shape=check):
                    break
            else:
                fuel_follower.update_forced(frame=frame)
            frame = gbv.draw_circles(frame=frame,
                                     circs=[fuel_follower.get()],
                                     color=(255, 0, 0),
                                     thickness=10)

        if len(all_fuels) == 0:
            found_fuel = False
        if fuel_follower is not None and fuel_follower.is_lost(max_count=20):
            found_fuel = False
        if not window.show_frame(frame):
            break
def main():
    camera = gbv.USBCamera(0)
    camera.set_exposure(-5)
    find_fuel = gbv.CircleFinder(FUEL_THRESHOLD,
                                 FUEL,
                                 contour_min_area=CONTOUR_MIN_AREA)
    window = gbv.CameraWindow(
        'feed',
        camera,
        drawing_pipeline=gbv.DrawCircles(
            FUEL_THRESHOLD, (0, 255, 0),
            contours_process=gbv.FilterContours(CONTOUR_MIN_AREA),
            thickness=6))
    while True:
        frame = window.show_and_get_frame()
        fuels = find_fuel.find_shapes(frame)
        k = window.last_key_pressed
        if k == 'r':
            wrapper = gbv.ContinuesShapeWrapper(fuels,
                                                frame,
                                                find_fuel.find_shapes,
                                                shape_type=SHAPE_TYPE,
                                                tracker_type=TRACKER_TYPE,
                                                shape_lifespan=20,
                                                track_new=True)
            break
    window.close()
    window = gbv.FeedWindow('track')
    window.open()
    ok = True
    while ok:
        ok, frame = camera.read()
        fuels = wrapper.find_shapes(frame)

        for i, fuel in fuels.items():
            if fuel is None:
                continue
            frame = gbv.draw_circles(frame, [fuel], (0, 255, 0), thickness=6)
            frame = gbv.draw_text(frame,
                                  f'ID: {i}',
                                  (int(fuel[0][0]) - 10, int(fuel[0][1]) - 10),
                                  1, (0, 255, 0),
                                  thickness=3)
        if not window.show_frame(frame):
            break
Esempio n. 5
0
import cv2 as cv
import gbvision as gbv
import numpy as np

pic = cv.imread('road.jpg')
_mask = cv.imread('mask.jpg')
win = gbv.FeedWindow('original')
win.open()

# ______________    init    ___________________________________________________

bgdModel = np.zeros((1, 65), np.float64)
fgdModel = np.zeros((1, 65), np.float64)
subj = pic.copy()

mask = np.zeros(_mask.shape[:2], np.uint8)

rect = cv.boundingRect(gbv.find_contours(_mask))

mask, bgdModel, fgdModel = cv.grabCut(subj, mask, None, bgdModel, fgdModel, 5,
                                      cv.GC_INIT_WITH_MASK)

mask = np.where((mask == 2) | (mask == 0), 0, 1).astype('uint8')
img = subj * mask[:, :, np.newaxis]

cv.rectangle(pic, rect[0], rect[1], (255, 0, 0), 4)
while 1:
    win.show_frame(pic)

cv.destroyAllWindows()