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()
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
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()