예제 #1
0
def main():
    cs = CameraServer.getInstance()
    cs.enableLogging()

    MServer = MjpegServer(name='server', port=8000)

    # Capture from the first USB Camera on the system
    camera = cs.startAutomaticCapture(dev=0, return_server=True)
    camera.setResolution(320, 240)

    # Get a CvSink. This will capture images from the camera
    cvSink = cs.getVideo()

    # (optional) Setup a CvSource. This will send images back to the Dashboard
    outputStream = cs.putVideo("Name", 320, 240)

    # Allocating new images is very expensive, always try to preallocate
    img = np.zeros(shape=(240, 320, 3), dtype=np.uint8)
    cs.addServer(name='server', port=8000, server=MServer)

    while True:
        # Tell the CvSink to grab a frame from the camera and put it
        # in the source image.  If there is an error notify the output.
        time, img = cvSink.grabFrame(img)
        if time == 0:
            # Send the output the error.
            outputStream.notifyError(cvSink.getError())
            # skip the rest of the current iteration
            continue

        #
        # Insert your image processing logic here!
        #

        # (optional) send some image back to the dashboard
        server
        outputStream.putFrame(img)
예제 #2
0
                continue
            output.append(contour)
        return output



gLine = Example()

camera = UsbCamera("CammyBoi", 0)
camera.setExposureManual(10)
#camera.setConfigJson(json.dumps(json.load(open(configFile, "rt", encoding="utf-8"))))
vidSink = CvSink("Camera")
vidSink.setSource(camera)

vidSource = CvSource("Processed", VideoMode.PixelFormat.kMJPEG, 640, 480, 30)
networkStream = MjpegServer("Stream", 1181)
networkStream.setSource(vidSource)
img = np.zeros(shape=(480, 640, 3), dtype=np.uint8)

while(True):
    ret, src = vidSink.grabFrame(img)
    startTime = time.time()

    gLine.process(src)


    image = gLine.mask_output

    print(time.time() - startTime)
    #cv2.imshow('frame', img)
    vidSource.putFrame(image)
예제 #3
0
    print("Connecting to camera 0")
    cs = CameraServer.getInstance()
    cs.enableLogging()
    Camera = UsbCamera('Cam 0', 0)
    #exp = 2
    #Camera.setExposureManual(exp)
    Camera.setResolution(160,120)
    cs.addCamera(Camera)
    #SmartDashBoardValues.putNumber('ExpAuto', 0)

    print("connected")

    Camera1 = UsbCamera('Cam 1', 1)
    Camera1.setResolution(640, 480)
    Camera1.setFPS(25)
    mjpegServer = MjpegServer("serve_Cam 1", 1182)
    mjpegServer.setResolution(480, 360)
    mjpegServer.setSource(Camera1)

    CvSink = cs.getVideo()
    outputStream = cs.putVideo("Processed Frames", 160,120)

    #buffers to store img data
    img = np.zeros(shape=(160,120,3), dtype=np.uint8)
    #ExpStatus = SmartDashBoardValues.getNumber('ExpAuto', 0)
    # loop forever
    loopCount = 0
    #while True:
        # output = ""
        # ExpAuto = SmartDashBoardValues.getNumber('ExpAuto', 0)
        #
    # start NetworkTables
    ntinst = NetworkTablesInstance.getDefault()
    if server:
        print("Setting up NetworkTables server")
        ntinst.startServer()
    else:
        print("Setting up NetworkTables client for team {}".format(team))
        ntinst.startClientTeam(team)

    #### Initiate ####
    pipeline = GripPipeline()
    # start up cameras
    cameras = []
    for cameraConfig in cameraConfigs:
        cameras.append(startCamera(cameraConfig))
    dualServer = MjpegServer("Dual Server", "", 1184)
    dualServer.setSource(cameras[0])
    # start up the cv2 stream
    img = np.zeros(shape=(360, 240, 3), dtype=np.uint8)
    cvSink = CameraServer.getInstance().getVideo()
    cvStream = MjpegServer("Grip Stream", "", 6969)
    gripVideo = CameraServer.getInstance().putVideo("GRIP stream", 360, 240)
    cvStream.setSource(gripVideo)
    # set up networktables
    sd = nt.getTable("SmartDashboard")
    ow = nt.getTable("ObiWan")
    sd.addEntryListener(valueChanged)
    ow.addEntryListener(valueChanged)
    sd.putBoolean("testLines", False)
    sd.putBoolean("testContours", False)
    sd.putNumber("lowPoint", 0)
    # start cameras
    cameras = []
    for cameraConfig in cameraConfigs:
        cameras.append(startCamera(cameraConfig))

    server = CameraServer.getInstance()
    cameraZeroSink = server.getVideo()

    print(cameraZeroSink.getSource())

    image = np.zeros(shape=(160, 120, 3), dtype=np.uint8)

    outPutStream = server.putVideo("mask", 160, 120)

    mJpegServer = MjpegServer("cvServer", 1186)

    cvSource = CvSource("CVSource", cscore.VideoMode.PixelFormat.kMJPEG, 160,
                        120, 30)

    # loop forever
    while True:
        start = time.time()
        status, image = cameraZeroSink.grabFrame(image, 30)
        if status == 0:
            outPutStream.notifyError(cameraZeroSink.getError())
            print(cameraZeroSink.getError())
            continue
        #image2 = cv2.rectangle(image, (20, 60), (140, 120), (255, 255, 255), 5)
        #outPutStream.putFrame(image)
예제 #6
0
        [config['name'] for _, _, config in driver_cameras])
    print('Vision camera: ' + vision_camera_name)
    print('Driver cameras: ' + driver_camera_list)
    if USE_SMART_DASHBOARD:
        smart_dashboard.putString('Vision/vision_camera', vision_camera_name)
        smart_dashboard.putString('Vision/driver_cameras', driver_camera_list)

    # This is only for debugging, as once I print out a bunch of values
    #  it's hard to see that the initial setup went correctly.
    if PAUSE:
        print('Waiting...')
        time.sleep(5)
        print('Running!')

    # Start mjpeg_server
    mjpeg_server = MjpegServer('Vision Server', 1181)
    mjpeg_server_2 = MjpegServer('Vision Server', 1182)

    # Start camera loop
    driver_camera = driver_cameras[0]
    driver_camera[1].setEnabled(True)
    mjpeg_server.setSource(driver_camera[0])
    driver_camera = driver_cameras[1]
    driver_camera[1].setEnabled(True)
    mjpeg_server_2.setSource(driver_camera[0])

    camera, cvsink, config = vision_camera
    cvsink.setEnabled(True)

    # This code creates a cvsink which will push a modified image to the
    #  MJPEG stream. Testing only.
예제 #7
0
from networktables import NetworkTablesInstance
from networktables.util import ntproperty
from pyimagesearch.shapedetector import ShapeDetector
import convenience

class Client(object):
	centerLoc = ntproperty("/SmartDashboard/centerLoc", (0,0))

cl = Client()

if (__name__ == "__main__"):
	team = 801
	ntinst = NetworkTablesInstance.getDefault()
	ntinst.startClientTeam(team)
	usbCamera = UsbCamera("USB Camera 0", 0)
	mjpegServer1 = MjpegServer("serve_USB Camera 0", 1181)
	mjpegServer1.setSource(usbCamera)
	cvSink = CvSink("opencv_USB Camera 0")
	cvSink.setSource(usbCamera)
	outputStream = CvSource("Blur", VideoMode.PixelFormat.kMJPEG, 320, 240, 15)
	mjpegServer2 = MjpegServer("serve_Blur Camera 1", 1182)
	mjpegServer2.setSource(outputStream)
	frame = np.zeros((320,240,3), 'uint8')
	iter = 0
	while(True):
		_, frame = cvSink.grabFrame(frame)
		hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
		lower_blue = np.array([110, 50, 50])
		upper_blue = np.array([130, 255, 255])
		mask = cv2.inRange(hsv, lower_blue, upper_blue)
		res = cv2.bitwise_and(frame,frame, mask=mask)
예제 #8
0
    driver_camera_list = ', '.join(
        [config['name'] for _, _, config in driver_cameras])
    print('Vision camera: ' + vision_camera_name)
    print('Driver cameras: ' + driver_camera_list)
    # smart_dashboard.putString('Vision/vision_camera', vision_camera_name)
    # smart_dashboard.putString('Vision/driver_cameras', driver_camera_list)

    # This is only for debugging, as once I print out a bunch of values
    #  it's hard to see that the initial setup went correctly.
    print('Waiting...')
    time.sleep(5)
    print('Running!')

    # Start mjpeg_server
    port = 1181
    mjpeg_server = MjpegServer('Vision Server', port)
    # If you ever need to standardize resolutions between cameras, you
    #  can use the following. It's bad though, because then it
    #  uncompresses and resises all images, so it decreases FPS.
    # mjpeg_server.setResolution(640, 480)
    # mjpeg_server.setCompression(70)

    # Start camera loop
    driver_camera = driver_cameras[0]
    driver_camera[1].setEnabled(True)
    # mjpeg_server.setSource(driver_camera[0])

    camera, cvsink, config = vision_camera
    cvsink.setEnabled(True)
    mjpeg_server.setSource(camera)
예제 #9
0
    fps = 60
    width, height = 480, 270

    Camera.setResolution(width, height)
    Camera.setFPS(fps)
    # Camera.getProperty("exposure_auto").set(1)
    Camera.getProperty("brightness").set(5)
    Camera.getProperty("gain").set(0)
    Camera.getProperty("contrast").set(5)
    if camera_number == 1:
        Camera.getProperty("saturation").set(7)
    elif camera_number == 2:
        Camera.getProperty("saturation").set(69)
    Camera.getProperty("exposure_absolute").set(6)

    mjpegServer = MjpegServer("serve_Cam 1", 1182)
    mjpegServer.setResolution(width, height)
    mjpegServer.setSource(Camera)

    CvSink = cs.getVideo()
    outputStream = cs.putVideo("Processed Frames", width, height)

    #buffers to store img data
    img = np.zeros(shape=(width,height,3), dtype=np.uint8)

    # loop forever
    loopCount = 0
    while True:
        GotFrame, img = CvSink.grabFrame(img)
        if GotFrame  == 0:
            outputStream.notifyError(CvSink.getError())