Search code examples
pythoncameraraspberry-pigoogle-cloud-platformgoogle-cloud-vision

Web Camera with Raspberry Pi3 to detect objects using Google Cloud Vision


I want to integrate USB Web Camera with Raspberry Pi3 and send the images captured to Google Cloud Vision to detect objects. Any Python 3 library for doing the same?

I have successfully integrated my web camera and able to stream video over URL using "Motion"

Any library similar to Pi Camera or that can make me move forward from the above mentioned Motion library. would be of great help.


Solution

  • Done :)

    import pygame
    import pygame.camera
    import time
    import base64
    
    from googleapiclient import discovery
    from oauth2client.client import GoogleCredentials
    
    
    pygame.camera.init()
    pygame.camera.list_cameras()
    cam = pygame.camera.Camera("/dev/video0", (640, 480))
    cam.start()
    time.sleep(0.1)
    img = cam.get_image()
    if file:
        pygame.image.save(img, file)
    else:
        pygame.image.save(img, "img_captured.jpg")
    cam.stop()
    
    credentials = GoogleCredentials.get_application_default()
    service = discovery.build('vision', 'v1', credentials=credentials)
    
    with open('img_captured.jpg', 'rb') as image:
        image_content = base64.b64encode(image.read())
        service_request = service.images().annotate(body={
            'requests': [{
                'image': {
                    'content': image_content.decode('UTF-8')
                },
                'features': [{
                    'type': 'LOGO_DETECTION',
                    'maxResults': 1
                }]
            }]
        })
        response = service_request.execute()
    
        try:
            label = response['responses'][0]['logoAnnotations'][0]['description']
        except:
            label = "No response."
    
        print("Detected -->" + label)