From 75103431b359228c73478eab3e8b40cab6ac3fa8 Mon Sep 17 00:00:00 2001 From: JamesH Date: Wed, 24 Jul 2013 10:32:39 +0100 Subject: [PATCH] Added -roi command to allow specification of the area of the sensor to use as input to the ISP. This facilitates zooming (including offcentre) Also updated the docs to reflect the new command and updated to latest published version. --- .../linux/apps/raspicam/README.md | 431 +++++++++++------- .../linux/apps/raspicam/RaspiCamControl.c | 57 ++- .../linux/apps/raspicam/RaspiCamControl.h | 10 + .../linux/apps/raspicam/RaspiCamDocs.odt | Bin 34112 -> 44226 bytes 4 files changed, 321 insertions(+), 177 deletions(-) diff --git a/host_applications/linux/apps/raspicam/README.md b/host_applications/linux/apps/raspicam/README.md index 33b5b9ee3..bb284268d 100644 --- a/host_applications/linux/apps/raspicam/README.md +++ b/host_applications/linux/apps/raspicam/README.md @@ -1,356 +1,435 @@ -RaspiCam Documentation -====================== +RaspiCam Documentation -This document describes the use of the three Raspberry Pi camera applications as of March 2013. +This document describes the use of the three Raspberry Pi camera applications as of July 2013. -There are three applications provided, `RaspiStill`, `RapiVid` and `RaspiStillYUV`. `RaspiStill` and `RaspiStillYUV` are very similar and are intended for capturing images, `RaspiVid` is for capturing video. +There are three applications provided, raspistill, raspivid and raspistillyuv. raspistill and raspistillyuv are very similar and are intended for capturing images, raspivid is for capturing video. All the applications are command line driven, written to take advantage of the mmal API which runs over OpenMAX. The mmal API provides an easier to use system than that presented by OpenMAX. Note that mmal is a Broadcom specific API used only on Videocore 4 systems. -The applications use up to three OpenMAX(mmal) components - camera, preview and encoder. All applications use the camera component, `RaspiStill` uses the Image Encode component, RaspiVid uses the Video Encode component and `RaspiStillYUV` -does not use an encoder, and sends its YUV output direct from camera component to file. +The applications use up to four OpenMAX(mmal) components - camera, preview, encoder and null_sink. All applications use the camera component, raspistill uses the Image Encode component, raspivid uses the Video Encode component and raspistillyuv does not use an encoder, and sends its YUV or RGB output direct from camera component to file. -The preview display is optional, but can be use full screen or directed to specific rectangular area on the display. - -In addition it is possible to omit the filename option, in which case the preview is displayed but no file is written. +The preview display is optional, but can be used full screen or directed to a specific rectangular area on the display. If preview is disabled, the null_sink component is used to 'absorb' the preview frames. It is necessary for the camera to produce preview frames even if not required for display, as they are used for calculating exposure and white balance settings. +In addition it is possible to omit the filename option, in which case the preview is displayed but no file is written, or to redirect all output to stdout. + Command line help is available by typing just the application name in on the command line. -Common Command line Options -=========================== +Setting up the Camera hardware + + +Warning. Cameras are static sensitive. Earth yourself prior to handling the PCB, a sink tap/faucet or similar should suffice if you don’t have an earthing strap. +The camera board attaches to the Raspberry Pi via a 15 way ribbon cable. There are only two connections to make, the ribbon cable need to be attached to the camera PCB and the Raspberry Pi itself. You need to get it the right way round or the camera will not work. On the camera PCB, the blue backing on the cable should be away from the PCB, and on the Raspberry Pi it should be towards the Ethernet connection (or where the Ethernet connector would be if you are using a model A). + +Although the connectors on the PCB and the Pi are different, they work in a similar way. On the Raspberry Pi, pull up the tabs on each end of the connector. It should slide up easily, and be able to pivot around slightly. Fully insert the ribbon cable into the slot, ensuring it is straight, then gently press down the tabs to clip it into place. The camera PCB itself also requires you to pull the tabs away from the board, gently insert the cable, then push the tabs back. The PCB connector is a little more awkward than the one on the Pi itself. + +Setting up the Camera software + +Execute the following instructions on the command line to download and install the latest kernel, GPU firmware and applications. You will need a internet connection for this to work correctly. + +sudo apt-get update +sudo apt-get upgrade + +Now you need to enable camera support using the raspi-config program you will have used when you first set up your Raspberry Pi. + +sudo raspi-config + +Use the cursor keys to move to the camera option and select enable. On exiting raspi-config it will ask to reboot. The enable option will ensure that on reboot the correct GPU firmware will be running (with the camera driver and tuning), and the GPU memory split is sufficient to allow the camera to acquire enough memory to run correctly. + +To test that the system is installed and working, try the following command : + +raspistill -v -o test.jpg + +The display should show a 5 second preview from the camera and then take a picture, saved to the file test.jpg, whilst display various informational messages. + +Troubleshooting + +If the camera is not working correctly, there are number of things to try. +Are the ribbon connectors all firmly seated and the right way round? They must be straight in their sockets. +Is the camera module connector firmly attached to the camera PCB? This is the connection from the smaller black camera module itself to the camera PCB. Sometimes this connection can come loose. Using a fingernail, flip up the connector on the PCB, then reseat it with gentle pressure, it engages with a very slight click. +Have sudo apt-get update, sudo apt-get upgrade been run? +Has raspi-config been run and the camera enabled? + +So, if things are still not working, try the following: + +Error : raspistill/raspivid not found. This probably means your update/upgrade failed in some way. Try it again. + +Error : ENOMEM displayed. Camera is not starting up. Check all connections again. +Error : ENOSPC displayed. Camera is probably running out of GPU memory. Check config.txt in the /boot/ folder. The gpu_mem option should be at least 128. + +If after all the above, the camera is still not working, it may be defective. Try posting on the Raspberry Pi forum (Camera section) to see if there is any more help available there. + +Common Command line Options Preview Window -============== - --preview, -p | Preview window settings <'x,y,w,h'> + + --preview, -p Preview window settings <'x,y,w,h'> Allows the user to define the size and location on the screen that the preview window will be placed. Note this will be superimposed over the top of any other windows/graphics. - --fullscreen, -f | Fullscreen preview mode + --fullscreen, -f Fullscreen preview mode Forces the preview window to use the whole screen. Note that the aspect ratio of the incoming image will be retained, so there may be bars on some edges. - --nopreview, -n, | Do not display a preview window + --nopreview, -n, Do not display a preview window Disables the preview window completely. Note that even though the preview is disabled, the camera will still be producing frames, so will be using power. + --opacity, -op Set preview window opacity + +Sets the opacity of the preview windows. 0 = invisible, 255 = fully opaque. + Camera Control Options -====================== - --sharpness, -sh | Set image sharpness (-100 to 100) + + --sharpness, -sh Set image sharpness (-100 to 100) Set the sharpness of the image, 0 is the default. - --contrast, -co | Set image contrast (-100 to 100) + --contrast, -co Set image contrast (-100 to 100) Set the contrast of the image, 0 is the default - --brightness, -br | Set image brightness (0 to 100) + --brightness, -br Set image brightness (0 to 100) Set the brightness of the image, 50 is the default. 0 is black, 100 is white. - --saturation, -sa | Set image saturation (-100 to 100) + --saturation, -sa Set image saturation (-100 to 100) set the colour saturation of the image. 0 is the default. - --ISO, -ISO | Set capture ISO + --ISO, -ISO Set capture ISO -Not yet implemented - - --vstab, -vs | Turn on video stabilisation +Sets the ISO to be used for captures. Range is 100 to 800. + --vstab, -vs Turn on video stabilisation In video mode only, turn on video stabilisation. - --ev, -ev | Set EV compensation + --ev, -ev Set EV compensation Set the EV compensation of the image. Range is -10 to +10, default is 0. - --exposure, -ex | Set exposure mode + --exposure, -ex Set exposure mode Possible options are: - off - auto Use automatic exposure mode - night Select setting for night shooting - nightpreview - backlight Select setting for back lit subject - spotlight - sports Select setting for sports (fast shutter etc) - snow Select setting optimised for snowy scenery - beach Select setting optimised for beach - verylong Select setting for long exposures - fixedfps Constrain fps to a fixed value - antishake Antishake mode - fireworks Select settings +off +auto Use automatic exposure mode +night Select setting for night shooting +nightpreview +backlight Select setting for back lit subject +spotlight +sports Select setting for sports (fast shutter etc) +snow Select setting optimised for snowy scenery +beach Select setting optimised for beach +verylong Select setting for long exposures +fixedfps, Constrain fps to a fixed value +antishake Antishake mode +fireworks Select settings Note that not all of these settings may be implemented, depending on camera tuning. - --awb, -awb | Set Automatic White Balance (AWB) mode - -Possible options are: - - off Turn off white balance calculation - auto Automatic mode (default) - sun Sunny mode - cloud Cloudy mode - shade Shaded mode - tungsten Tungsten lighting mode - fluorescent Fluorescent lighting mode - incandescent Incandescent lighting mode - flash Flash mode - horizon Horizon mode + --awb, -awb Set Automatic White Balance (AWB) mode -Set an effect to be applied to the image +off Turn off white balance calculation +auto Automatic mode (default) +sun Sunny mode +cloud Cloudy mode +shade Shaded mode +tungsten Tungsten lighting mode +fluorescent Fluorescent lighting mode +incandescent Incandescent lighting mode +flash Flash mode +horizon Horizon mode - --imxfx, -ifx | Set image effect + --imxfx, -ifx Set image effect -Possible options are: +Set an effect to be applied to the image - none NO effect (default) - negative Negate the image - solarise Solarise the image - posterize Posterise the image - whiteboard Whiteboard effect - blackboard Blackboard effect - sketch Sketch style effect - denoise Denoise the image - emboss Emboss the image - oilpaint Apply an oil paint style effect - hatch Hatch sketch style - gpen - pastel A pastel style effect - watercolour A watercolour style effect - film Film grain style effect - blur Blur the image - saturation Colour saturate the image - colourswap Not fully implemented - washedout Not fully implemented - posterise Not fully implemented - colourpoint Not fully implemented - colourbalance Not fully implemented - cartoon Not fully implemented - -Colour control - - --colfx, -cfx | Set colour effect +none NO effect (default) +negative Negate the image +solarise Solarise the image +posterize Posterise the image +whiteboard Whiteboard effect +blackboard Blackboard effect +sketch Sketch style effect +denoise Denoise the image +emboss Emboss the image +oilpaint Apply an oil paint style effect +hatch Hatch sketch style +gpen +pastel A pastel style effect +watercolour A watercolour style effect +film Film grain style effect +blur Blur the image +saturation Colour saturate the image +colourswap Not fully implemented +washedout Not fully implemented +posterise Not fully implemented +colourpoint Not fully implemented +colourbalance Not fully implemented +cartoon Not fully implemented + + --colfx, -cfx Set colour effect The supplied U and V parameters (range 0 to 255) are applied to the U and Y channels of the image. For example, --colfx 128:128 should result in a monochrome image. - --metering, -mm | Set metering mode + --metering, -mm Set metering mode Specify the metering mode used for the preview and capture - average Average the whole frame for metering. - spot Spot metering - backlit Assume a backlit image - matrix Matrix metering +average Average the whole frame for metering. +spot Spot metering +backlit Assume a backlit image +matrix Matrix metering + + --rotation, -rot Set image rotation (0-359) + +Sets the rotation of the image in viewfinder and resulting image. This can take any value from 0 upwards, but due to hardware constraints only 0, 90, 180 and 270 degree rotations are supported. + + + --hflip, -hf Set horizontal flip + +Flips the preview and saved image horizontally. + + --vflip, -vf Set vertical flip + +Flips the preview and saved image vertically. + + --roi, -roi Set sensor region of interest + +Allows the specification of the area of the sensor to be used as the source for the preview and capture. This is defined as x,y for the top left corner, and a width and height, all values in normalised coordinates (0.0-1.0). So to set a ROI at half way across and down the sensor, and an width and height of a quarter of the sensor use : + + -roi 0.5,0.5,0.25,0.25 Application specific settings -============================= -RaspiStill ----------- +raspistill - --width, -w | Set image width - --height, -h | Set image height - --quality, -q | Set jpeg quality <0 to 100> +--width, -w Set image width +--height, -h Set image height +--quality, -q Set jpeg quality <0 to 100> Quality 100 is almost completely uncompressed. 75 is a good all round value - --raw, -r | Add raw bayer data to jpeg metadata + --raw, -r Add raw bayer data to jpeg metadata This option inserts the raw Bayer data from the camera in to the JPEG metadata - --output, -o | Output filename . + --output -o Output filename . -Specify the output filename. If not specified, no file is saved +Specify the output filename. If not specified, no file is saved. If the filename is '-', then all output is sent to stdout. - --verbose, -v | Output verbose information during run + --verbose, -v Output verbose information during run Outputs debugging/information messages during the program run. - --timeout, -t | Time before takes picture and shuts down. + --timeout, -t Time before takes picture and shuts down. -The program will run for this length of time, then take the capture (if output is specified). If not specified, this is set to 5 seconds +The program will run for this length of time, then take the capture (if output is specified). If not specified, this is set to 5 seconds. - --timelapse, -tl | Timelapse mode. + --timelapse, -tl Timelapse mode. -The specific value is the time between shots in milliseconds. Note you should specify `%d` at the point in the filename where you want a frame count number to appear. e.g. +The specific value is the time between shots in milliseconds. Note you should specify %04d at the point in the filename where you want a frame count number to appear. e.g. - -t 30000 -tl 2000 -o image%d.jpg + -t 30000 -tl 2000 -o image%04d.jpg -will produce a capture every 2 seconds, over a total period of 30s, named `image1.jpg`, `image2.jpg..image15.jpg`. +will produce a capture every 2 seconds, over a total period of 30s, named image1.jpg, image0002.jpg..image0015.jpg. Note that the %04d indicates a 4 digit number with leading zero's added to pad to the required number of digits. So, for example, %08d would result in an 8 digit number. - --thumb, -th | Set thumbnail parameters (x:y:quality) + --thumb, -th Set thumbnail parameters (x:y:quality) Allows specification of the thumbnail image inserted in to the JPEG file. If not specified, defaults are a size of 64x48 at quality 35. - --demo, d | Run a demo mode + --demo, -d Run a demo mode This options cycles through range of camera options, no capture is done, the demo will end at the end of the timeout period, irrespective of whether all the options have been cycled. The time between cycles should be specified as a millisecond value. - --encoding, -e | Encoding to use for output file + --encoding, -e Encoding to use for output file Valid options are jpg, bmp, gif and png. Note that unaccelerated image types (gif, png, bmp) will take much longer to save than JPG which is hardware accelerated. Also note that the filename suffix is completely ignored when encoding a file. - --exif, -x | EXIF tag to apply to captures (format as 'key=value') + --exif, -x EXIF tag to apply to captures (format as 'key=value') Allows the insertion of specific exif tags in to the JPEG image. You can have up to 32 exif tge entries. This is useful for things like adding GPS metadata. For example, to set the Longitude - --exif GPS.GPSLongitude=5/1,10/1,15/100 + --exif GPS.GPSLongitude=5/1,10/1,15/100 would set the Longitude to 5degs, 10 minutes, 15 seconds. See exif documentation for more details on the range of tags available; the supported tags are as follows. - IFD0.< or - IFD1. - - EXIF. - - GPS. - - EINT. +IFD0.< or +IFD1.< +ImageWidth, ImageLength, BitsPerSample, Compression, PhotometricInterpretation, ImageDescription, Make, Model, StripOffsets, Orientation, SamplesPerPixel, RowsPerString, StripByteCounts, Xresolution, Yresolution, PlanarConfiguration, ResolutionUnit, TransferFunction, Software, DateTime, Artist, WhitePoint, PrimaryChromaticities, JPEGInterchangeFormat, JPEGInterchangeFormatLength, YcbCrCoefficients, YcbCrSubSampling, YcbCrPositioning, ReferenceBlackWhite, Copyright> + +EXIF.< +ExposureTime, FNumber, ExposureProgram, SpectralSensitivity, a +ISOSpeedRatings, OECF, ExifVersion, DateTimeOriginal, DateTimeDigitized, ComponentsConfiguration, CompressedBitsPerPixel, ShutterSpeedValue, ApertureValue, BrightnessValue, ExposureBiasValue, MaxApertureValue, SubjectDistance, MeteringMode, LightSource, Flash, FocalLength, SubjectArea, MakerNote, UserComment, SubSecTime, SubSecTimeOriginal, SubSecTimeDigitized, FlashpixVersion, ColorSpace, PixelXDimension, PixelYDimension, RelatedSoundFile, FlashEnergy, SpacialFrequencyResponse, FocalPlaneXResolution, FocalPlaneYResolution, FocalPlaneResolutionUnit, SubjectLocation, ExposureIndex, SensingMethod, FileSource, SceneType, CFAPattern, CustomRendered, ExposureMode, +WhiteBalance, DigitalZoomRatio, FocalLengthIn35mmFilm, SceneCaptureType, GainControl, Contrast, Saturation, Sharpness, DeviceSettingDescription, SubjectDistanceRange, ImageUniqueID> + +GPS.< +GPSVersionID, GPSLatitudeRef, GPSLatitude, GPSLongitudeRef, GPSLongitude, GPSAltitudeRef, GPSAltitude, GPSTimeStamp, GPSSatellites, GPSStatus, GPSMeasureMode, GPSDOP, GPSSpeedRef, GPSSpeed, GPSTrackRef, GPSTrack, GPSImgDirectionRef, GPSImgDirection, GPSMapDatum, GPSDestLatitudeRef, GPSDestLatitude, GPSDestLongitudeRef, GPSDestLongitude, GPSDestBearingRef, GPSDestBearing, GPSDestDistanceRef, GPSDestDistance, GPSProcessingMethod, GPSAreaInformation, GPSDateStamp, GPSDifferential> + +EINT.< +InteroperabilityIndex, InteroperabilityVersion, RelatedImageFileFormat, RelatedImageWidth, RelatedImageLength> Note that a small subset of these tags will be set automatically by the camera system, but will be overridden by any exif options on the command line. + --fullpreview, -fp Full Preview mode + +This runs the preview windows using the full resolution capture mode. Maximum frames per second in this mode is 15fps and the preview will have the same field of view as the capture. Captures should happen more quickly as no mode change should be required. This feature is currently under development. + + +raspistillyuv + + +Many of the options for raspistillyuv are the same as those for raspistill. This section shows the differences. + +Unsupported Options: + --exif, --encoding, --thumb, --raw, --quality + +Extra Options : + + --rgb, -rgb Save uncompressed data as RGB888 + +This option forces the image to be saved as RGB data with 8 bits per channel, rather than YUV420. + +Note that the image buffers saved in raspistillyuv are padded to a horizontal size divisible by 16 (so there may be unused bytes at the end of each line to made the width divisible by 16). Buffers are also padded vertically to be divisible by 16, and in the YUV mode, each plane of Y,U,V is padded in this way. + -RaspiVid --------- +raspivid - --width, -w | Set image width + + --width, -w Set image width Width of resulting video. This should be between 64 and 1920. - --height, -h | Set image height + --height, -h Set image height Height of resulting video. This should be between 64 and 1080. - --bitrate, -b | Set bitrate. + --bitrate, -b Set bitrate. Use bits per second, so 10MBits/s would be -b 10000000. For H264, 1080p a high quality bitrate would be 15Mbits/s or more. - --output, -o | Output filename . + --output -o Output filename . -Specify the output filename. If not specified, no file is saved +Specify the output filename. If not specified, no file is saved. If the filename is '-', then all output is sent to stdout. - --verbose, -v | Output verbose information during run + --verbose, -v Output verbose information during run Outputs debugging/information messages during the program run. - --timeout, -t | Time before takes picture and shuts down. + --timeout, -t Time before takes picture and shuts down. -The program will run for this length of time, then take the capture (if output is specified). If not specified, this is set to 5seconds +The program will run for this length of time, then take the capture (if output is specified). If not specified, this is set to 5seconds. Setting 0 will mean the application will run continuously until stopped with Ctrl-C. - --demo, -d | Run a demo mode + --demo, -d Run a demo mode This options cycles through range of camera options, no capture is done, the demo will end at the end of the timeout period, irrespective of whether all the options have been cycled. The time between cycles should be specified as a millisecond value. - --framerate, -fps | Specify the frames per second to record + --framerate, -fps Specify the frames per second to record At present, the minimum frame rate allowed is 2fps, the maximum is 30fps. This is likely to change in the future. - --penc, -e | Display preview image *after* encoding + --penc, -e Display preview image *after* encoding Switch on an option to display the preview after compression. This will show any compression artefacts in the preview window. In normal operation, the preview will show the camera output prior to being compressed. This option is not guaranteed to work in future releases. + --intra, -g Specify the intra refresh period (key frame rate/GoP) + +Sets the intra refresh period (GoP) rate for the recorded video. H264 video uses a complete frame (I-frame) every intra refresh period from which subsequent frames are based. This options specifies the numbers of frames between each I-frame. Larger numbers here will reduce the size of the resulting video, smaller numbers make the stream more robust to error. Examples -======== Still captures --------------- By default, captures are done at the highest resolution supported by the sensor. This can be changed using the -w and -h command line options. Taking a default capture after 2s (note times are specified in milliseconds) on viewfinder, saving in image.jpg - ./RaspiStill -t 2000 -o image.jpg + raspistill -t 2000 -o image.jpg Take a capture at a different resolution. - ./RaspiStill -t 2000 -o image.jpg -w 640 -h 480 + raspistill -t 2000 -o image.jpg -w 640 -h 480 Now reduce the quality considerably to reduce file size - ./RaspiStill -t 2000 -o image.jpg -q 5 + raspistill -t 2000 -o image.jpg -q 5 Force the preview to appear at coordinate 100,100, with width 300 and height 200 pixels. - ./RaspiStill -t 2000 -o image.jpg -p 100,100,300,200 + raspistill -t 2000 -o image.jpg -p 100,100,300,200 Disable preview entirely - ./RaspiStill -t 2000 -o image.jpg -n + raspistill -t 2000 -o image.jpg -n Save the image as a png file (lossless compression, but slower than JPEG). Note that the filename suffix is ignored when choosing the image encoding. - ./RaspiStill -t 2000 -o image.png –e png + raspistill -t 2000 -o image.png –e png -Add some EXIF information to the JPEG. This sets the `Artist` tag name to `Boris`, and the GPS altitude to 123.5m. Note that if setting GPS tags you should set as a minimum `GPSLatitude`, `GPSLatitudeRef`, `GPSLongitude`, `GPSLongitudeRef`, `GPSAltitude` and `GPSAltitudeRef`. +Add some EXIF information to the JPEG. This sets the Artist tag name to Boris, and the GPS altitude to 123.5m. Note that if setting GPS tags you should set as a minimum GPSLatitude, GPSLatitudeRef, GPSLongitude, GPSLongitudeRef, GPSAltitude and GPSAltitudeRef. - ./RaspiStill -t 2000 -o image.jpg -x IFDO.Artist=Boris -x GPS.GPSAltitude=1235/10 + raspistill -t 2000 -o image.jpg -x IFDO.Artist=Boris -x GPS.GPSAltitude=1235/10 Set an emboss style image effect - ./RaspiStill -t 2000 -o image.jpg -ifx emboss + raspistill -t 2000 -o image.jpg -ifx emboss Set the U and V channels of the YUV image to specific values (128:128 produces a greyscale image) - ./RaspiStill -t 2000 -o image.jpg -cfx 128:128 + raspistill -t 2000 -o image.jpg -cfx 128:128 Run preview ONLY for 2s, no saved image. - ./RaspiStill -t 2000 + raspistill -t 2000 + +Take timelapse picture, one every 10 seconds for 10 minutes (10 minutes = 600000ms), named image_number_1_today.jpg, image_number_2_today.jpg onwards. + + raspistill -t 600000 -tl 10000 -o image_num_%d_today.jpg + +Take a picture and send image data to stdout -Take timelapse picture, one every 10 seconds for 10 minutes (10 minutes = 600000ms), named `image_number_1_today.jpg`, `image_number_2_today.jpg` onwards. + raspistill -t 2000 -o - - ./RaspiStill -t 600000 -tl 10000 -o image_num_%d_today.jpg +Take a picture and send image data to file + + raspistill -t 2000 -o - > my_file.jpg Video Captures --------------- Image size and preview settings are the same as for stills capture. Default size for video recording is 1080p (1920x1080) Record a 5s clip with default settings (1080p30) - ./RaspiVid -t 5000 -o video.h264 + raspivid -t 5000 -o video.h264 Record a 5s clip at a specified bitrate (3.5MBits/s) - ./RaspiVid -t 5000 -o video.h264 -b 3500000 + raspivid -t 5000 -o video.h264 -b 3500000 Record a 5s clip at a specified framerate (5fps) - ./RaspiVid -t 5000 -o video.h264 -f 5 + raspivid -t 5000 -o video.h264 -f 5 + +Encode a 5s camera stream and send image data to stdout + + raspivid -t 5000 -o - + +Encode a 5s camera stream and send image data to file + + raspivid -t 5000 -o - > my_file.h264 + + + + + + + + diff --git a/host_applications/linux/apps/raspicam/RaspiCamControl.c b/host_applications/linux/apps/raspicam/RaspiCamControl.c index ed6039c65..19e07208c 100755 --- a/host_applications/linux/apps/raspicam/RaspiCamControl.c +++ b/host_applications/linux/apps/raspicam/RaspiCamControl.c @@ -137,6 +137,7 @@ static const int metering_mode_map_size = sizeof(metering_mode_map)/sizeof(meter #define CommandRotation 12 #define CommandHFlip 13 #define CommandVFlip 14 +#define CommandROI 15 static COMMAND_LIST cmdline_commands[] = { @@ -154,7 +155,8 @@ static COMMAND_LIST cmdline_commands[] = {CommandMeterMode, "-metering", "mm", "Set metering mode (see Notes)", 1}, {CommandRotation, "-rotation", "rot","Set image rotation (0-359)", 1}, {CommandHFlip, "-hflip", "hf", "Set horizontal flip", 0}, - {CommandVFlip, "-vflip", "vf", "Set vertical flip", 0} + {CommandVFlip, "-vflip", "vf", "Set vertical flip", 0}, + {CommandROI, "-roi", "roi","Set region of interest (x,y,w,d as normalised coordinates [0.0-1.0])", 1} }; static int cmdline_commands_size = sizeof(cmdline_commands) / sizeof(cmdline_commands[0]); @@ -590,6 +592,35 @@ int raspicamcontrol_parse_cmdline(RASPICAM_CAMERA_PARAMETERS *params, const char params->vflip = 1; used = 1; break; + + case CommandROI : + { + double x,y,w,h; + int args; + + args = sscanf(arg2, "%lf,%lf,%lf,%lf", &x,&y,&w,&h); + + if (args != 4 || x > 1.0 || y > 1.0 || w > 1.0 || h > 1.0) + { + return 0; + } + + // Make sure we stay within bounds + if (x + w > 1.0) + w = 1 - x; + + if (y + h > 1.0) + h = 1 - y; + + params->roi.x = x; + params->roi.y = y; + params->roi.w = w; + params->roi.h = h; + + used = 2; + break; + } + } return used; @@ -655,6 +686,7 @@ void raspicamcontrol_dump_parameters(const RASPICAM_CAMERA_PARAMETERS *params) fprintf(stderr, "Exposure Mode '%s', AWB Mode '%s', Image Effect '%s'\n", exp_mode, awb_mode, image_effect); fprintf(stderr, "Metering Mode '%s', Colour Effect Enabled %s with U = %d, V = %d\n", metering_mode, params->colourEffects.enable ? "Yes":"No", params->colourEffects.u, params->colourEffects.v); fprintf(stderr, "Rotation %d, hflip %s, vflip %s\n", params->rotation, params->hflip ? "Yes":"No",params->vflip ? "Yes":"No"); + fprintf(stderr, "ROI x %lf, y %f, w %f h %f\n", params->roi.x, params->roi.y, params->roi.w, params->roi.h); } /** @@ -718,6 +750,8 @@ void raspicamcontrol_set_defaults(RASPICAM_CAMERA_PARAMETERS *params) params->colourEffects.v = 128; params->rotation = 0; params->hflip = params->vflip = 0; + params->roi.x = params->roi.y = 0.0; + params->roi.w = params->roi.h = 1.0; } /** @@ -776,6 +810,7 @@ int raspicamcontrol_set_all_parameters(MMAL_COMPONENT_T *camera, const RASPICAM_ //result += raspicamcontrol_set_thumbnail_parameters(camera, ¶ms->thumbnailConfig); TODO Not working for some reason result += raspicamcontrol_set_rotation(camera, params->rotation); result += raspicamcontrol_set_flips(camera, params->hflip, params->vflip); + result += raspicamcontrol_set_ROI(camera, params->roi); return result; } @@ -1119,6 +1154,26 @@ int raspicamcontrol_set_flips(MMAL_COMPONENT_T *camera, int hflip, int vflip) return mmal_port_parameter_set(camera->output[2], &mirror.hdr); } +/** + * Set the ROI of the sensor to use for captures/preview + * @param camera Pointer to camera component + * @param rect Normalised coordinates of ROI rectangle + * + * @return 0 if successful, non-zero if any parameters out of range + */ +int raspicamcontrol_set_ROI(MMAL_COMPONENT_T *camera, PARAM_FLOAT_RECT_T rect) +{ + MMAL_PARAMETER_INPUT_CROP_T crop = {{MMAL_PARAMETER_INPUT_CROP, sizeof(MMAL_PARAMETER_INPUT_CROP_T)}}; + + crop.rect.x = (65536 * rect.x); + crop.rect.y = (65536 * rect.y); + crop.rect.width = (65536 * rect.w); + crop.rect.height = (65536 * rect.h); + + return mmal_port_parameter_set(camera->control, &crop.hdr); +} + + /** * Asked GPU how much memory it has allocated * diff --git a/host_applications/linux/apps/raspicam/RaspiCamControl.h b/host_applications/linux/apps/raspicam/RaspiCamControl.h index 42e53ddc6..699e65b8d 100644 --- a/host_applications/linux/apps/raspicam/RaspiCamControl.h +++ b/host_applications/linux/apps/raspicam/RaspiCamControl.h @@ -101,6 +101,14 @@ typedef struct int quality; } MMAL_PARAM_THUMBNAIL_CONFIG_T; +typedef struct +{ + double x; + double y; + double w; + double h; +} PARAM_FLOAT_RECT_T; + /// struct contain camera settings typedef struct { @@ -120,6 +128,7 @@ typedef struct int rotation; /// 0-359 int hflip; /// 0 or 1 int vflip; /// 0 or 1 + PARAM_FLOAT_RECT_T roi; /// region of interest to use on the sensor. Normalised [0,1] values in the rect } RASPICAM_CAMERA_PARAMETERS; @@ -152,6 +161,7 @@ int raspicamcontrol_set_imageFX(MMAL_COMPONENT_T *camera, MMAL_PARAM_IMAGEFX_T i int raspicamcontrol_set_colourFX(MMAL_COMPONENT_T *camera, const MMAL_PARAM_COLOURFX_T *colourFX); int raspicamcontrol_set_rotation(MMAL_COMPONENT_T *camera, int rotation); int raspicamcontrol_set_flips(MMAL_COMPONENT_T *camera, int hflip, int vflip); +int raspicamcontrol_set_ROI(MMAL_COMPONENT_T *camera, PARAM_FLOAT_RECT_T rect); //Individual getting functions int raspicamcontrol_get_saturation(MMAL_COMPONENT_T *camera); diff --git a/host_applications/linux/apps/raspicam/RaspiCamDocs.odt b/host_applications/linux/apps/raspicam/RaspiCamDocs.odt index 4dc91eb269cccbb1c738d9f136c85463d4dd8f72..9654fcca3ea35c8fe4fb6dd7ec6d55f80aeb67f5 100644 GIT binary patch literal 44226 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 F{{R+M?SB9O