Main Content

cameraboard

Connection to camera board on Raspberry Pi hardware

Description

This object represents a connection from the MATLAB® software to the camera board on the Raspberry Pi® hardware. To interact with the camera board, use this object with the functions listed in Object Functions.

Creation

Description

example

mycamera = cameraboard(mypi) creates a connection, mycamera, from the MATLAB software to a camera board on the Raspberry Pi hardware.

example

mycamera = cameraboard(mypi,Name,Value) uses name-value pair arguments to override the default values of writable camera board properties. You can use these properties to control image properties such as size, resolution, orientation, exposure, and special effects.

Input Arguments

expand all

Connection to the Raspberry Pi hardware board, specified as a raspi object.

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: mycam = cameraboard(mypi,'Resolution','1280x720')

The height and width of the image in pixels that the camera captures, specified as as character vector.

Example: '1024x768'

Data Types: char

The quality of the image that the camera captures, specified as a scalar between 1 and 100 (low to high).

The value of this parameter is inversely related to the amount of compression the camera performs upon the JPEG images. A value of 1 applies maximum compression. A value of 100 applies minimal compression.

Example: 10

Data Types: double

The orientation of the image that the camera captures, specified as 0, 90, 180, or 270.

Example: 180

Data Types: double

Reverse the left and right orientation of the image that the camera captures.

Example: 1

Data Types: scalar

Reverse the top and bottom orientation of the image that the camera captures.

Example: 1

Data Types: scalar

This property is read-only.

The number of frames per second (fps) that the camera captures, specified as a scalar between 2 and 90.

Example: 30

Data Types: double

The brightness level to adjust for the amount of lighting on the image that the camera captures, specified as a scalar between 0 and 100 (low to high).

Example: 60

Data Types: double

The contrast level to adjust for the difference between brightest and dimmest areas in the image that the camera captures, specified as a scalar between -100 and 100 (low to high).

Example: 60

Data Types: double

The saturation level to adjust the amount of color in the image that the camera captures, specified as a scalar between -100 and 100 (low to high).

Example: 60

Data Types: double

The sharpness level to adjust the clarity of the image that the camera captures, specified as a scalar between -100 to 100 (low to high).

Example: 60

Data Types: double

The exposure mode of the image that the camera captures. Use auto for the camera select the best mode.

Example: 'backlight'

Data Types: char

The exposure compensation applied to the image that the camera captures, specified as a scalar from -10 to -10 (low to high).

Fine-tune the automatic exposure. For example, if a backlit subject is too dark when ExposureMode is 'backlight', increase the value of ExposureCompensation.

Example: -1

Data Types: double

The automatic white balance (AWB) mode applied to the image that the camera captures, specified as a character vector. The AWB mode adjusts the hue of the image to match the color temperature of various light sources. Use auto for the camera to select the best mode for image capture.

For example, tungsten light bulbs tend to produce images that have an orange hue. To reduce this effect, set AWBMode to auto or tungsten. To keep this effect, set AWBMode to off. To heighten this effect, set AWBMode to auto or shade.

Example: 'fluorescent'

Data Types: char

The mode to select which portion of the image determines exposure, specified as a character vector.

  • average — Uses values from across the scene, with a moderate bias toward values near the center.

  • spot — Uses values from a narrow area in the center of the image.

  • backlit — Uses a cluster of lower values near the center of the image.

  • matrix — Uses values from a grid of specific points in the image.

Example: 'backlight'

Data Types: char

The special effect applied to the image that the camera captures, specified as a character vector. Use none to disable special effects on the image.

Example: 'cartoon'

Data Types: char

Activate built-in stabilization to reduce effects of vibration on the video that the camera captures, specified as a character vector.

Example: 'on'

Data Types: char

The portion of the camera sensor to use when capturing the image, specified as a vector of four values: x, y, width, and height. You can use this definition to perform digital panning and zooming while you record video.

For still images (snapshot) and video (record), the camera smooths the Region of interest (ROI) changes by applying them gradually over a sequence of image frames.

The following values define the starting point and the size of ROI:

  • X, the vertical starting point of ROI, from 0.0000 to 1.0000 (top to bottom)

  • Y, the horizontal starting point of ROI, from 0.0000 to 1.0000 (left to right)

  • Height of ROI, from 0.0000 to 1.0000 (small to large)

  • Width of ROI, from 0.0000 to 1.0000 (small to large)

The following illustration shows how X and Y position the ROI relative to the camera board sensor:

  • The red dot is at X = 0.00 and Y = 0.00.

  • The blue dot is at X = 1.00, Y = 1.00.

For example, entering:

mycam.ROI = [0.50 0.50 0.33 0.33]
produces the following ROI.

The 0.50 0.50 values place the upper left corner of the ROI in the center of the sensor. The 0.33 0.33 values resize the ROI to 1/3 of the sensor. If ROI exceeds the dimensions of the sensor, the method that you are using produces the following error:

Index exceeds matrix dimensions.

Example: [0.50 0.50 0.33 0.33]

Data Types: double

Object Functions

recordRecord video from camera board or ArduCam Multi Camera Adapter Module camera
stopStop recording from camera board or selected camera on ArduCam Multi Camera Adapter Module
snapshotCapture latest RGB image frame from Camera Board or selected camera on ArduCam Multi Camera Adapter Module

Examples

collapse all

Create a connection from the MATLAB to the Raspberry Pi board. If you encounter errors after running the above command, try using additional arguments (as listed in raspi) or refer to Troubleshoot Connecting Issues to Raspberry Pi Hardware.

mypi = raspi;

Create a connection, mycam, from the MATLAB software to the camera board on the Raspberry Pi hardware, and set the image resolution. The connection displays the camera board properties.

mycam = cameraboard(mypi,"Resolution","1280x720")
mycam = 

Cameraboard with Properties:

                    Name: Camera Board   
              Resolution: "1280x720"       (View available resolutions)
                 Quality: 10              (1 to 100)
                Rotation: 0               (0, 90, 180 or 270)
          HorizontalFlip: 0              
            VerticalFlip: 0              
               FrameRate: 30              (2 to 30)
               Recording: 0              

   Picture Settings
              Brightness: 50              (0 to 100)
                Contrast: 0               (-100 to 100)
              Saturation: 0               (-100 to 100)
               Sharpness: 0               (-100 to 100)

   Exposure and AWB
            ExposureMode: "auto"          (View available exposure modes)
    ExposureCompensation: 0               (-10 to 10)
                 AWBMode: "auto"          (View available AWB modes)
            MeteringMode: "average"       (View available metering modes)

   Effects
             ImageEffect: "none"          (View available image effects)
      VideoStabilization: "off"          
                     ROI: [0.00 0.00 1.00 1.00] (0.0 to 1.0 [top, left, width, height])

Capture and display a sequence of 10 snapshots on your computer.

for ii = 1:10
img = snapshot(mycam);
    imagesc(img)
    drawnow
end

Each of the 10 snapshots is the latest image captured by the camera.

If the image is upside down, change its orientation.

mycam.Rotation = 180

You can use the same approach to change the values of other cameraboard properties.

Record a 60 second video.

record(mycam,"myvideo.h264",60)

Stop the recording immediately.

stop(mycam)

Copy the video from the board to your computer.

getFile(mypi,"myvideo.h264","C:\MATLAB")

Delete the video file from the hardware to free up space.

deleteFile(mypi,"myvideo.h264")

Extended Capabilities