Download PDF Parts List View on YouTube Download Code

If you’ve ever wanted to know anything about the Raspberry Pi Camera then you’re in the right place!  We’ll see what cameras are available, how they work, and how to use them with the Raspberry Pi.

With a camera CSI connector available on every Raspberry Pi, including the 5-dollar Raspberry Pi Zero, incorporating a camera into your next project couldn’t be simpler.


In 2013 the Raspberry Pi Organization released its first Raspberry Pi camera.  Unlike USB cameras this camera had a connection direct;ly to the board’s GPU, providing improved performance while reducing costs.

Raspberry Pi Cameras

Since then the camera has become a standard fixture on the Raspberry Pi and thousands of projects have been built with them.

The Raspberry Pi Organization has released a couple of other cameras, the latest one just recently. In addition several manufacturers also make cameras for the Raspberry Pi, and they range in cost from about 5 dollars upwards.

How Cameras Work

The history of the camera is a long one, with some of the essential principles dating back to around 400 BC.  The first photographic cameras were developed in the 18th century, and the first motion picture cameras were created in the late 1800s. 

Basic Camera Operation

Digital cameras replaced traditional photographic film with digital sensors, arranged in an array. The individual elements of this array are called “pixels”, and they represent a red-green-blue value of the light level falling upon them.

Camera Pixels

The more of these pixels in the array, which is mounted on a substrate called the “frame, the better the quality the picture will be. A larger frame also adds to the quality.

Unlike conventional cameras, there is no need for an actual mechanical shutter on a digital camera. And most are capable of being used for both still images and video.

The sensors used for the Raspberry Pi cameras are common devices manufactured for phones and tablets, so they are very inexpensive.

Original Raspberry Pi Cameras

The folks at Raspberry Pi have released three cameras so far.

Camera v1

The first Raspberry Pi Camera was the version 1 camera. It used an OmniVision OV5647 sensor and had a resolution of 5 megapixels.

The camera is available in two versions.

  • NOIR Version – No infrared filter
  • Standard – With an infrared filter

This camera is no longer sold by Raspberry Pi, however, it is still readily available from other manufacturers, often for as little as 5 US dollars. Look on Amazon or eBay and you’ll have no trouble finding them.

Camera v2

This 8-megapixel camera uses the popular Sony IMX219 sensor.  As with its predecessor, it is available with or without an infrared filter.

Raspberry Pi Camera V2

This is still available from Raspberry Pi as of this writing. Again there are several similar and improved products from other manufacturers.

Raspberry Pi High-Quality (HQ) Camera

The Raspberry Pi High-Quality (HQ) Camera is a different design than previous modules. Unlike its predecessors, this camera comes as a base sensor unit capable of using type C or type CS lenses. 

The camera module is very rugged and it is mounted on a frame that accepts a standard ¼-inch tripod thread.  It uses the same flat film cable that the other Raspberry Pi cameras use.

As of this writing, Raspberry Pi offers two lenses for the camera.

  • 6mm CS‑mount wide-angle lens
  • 16mm C-mount telephoto lens

As the camera can accept type C or type CS lenses you may also use lenses manufactured by third parties, in fact the two lenses offered by Raspberry Pi are actually manufactured by CGL Electronics.

Lenses with compatible threads are often used in the Scientific and Surveillance industries.

I purchased an HQ Camera and a 16mm C-mount lens when they were first released, at the time I was not able to obtain a 6mm CS‑mount lens.

This camera uses a 12.3 megapixel Sony IMX477 sensor, whose 1.55μm × 1.55μm pixel size is double the pixel area of IMX219 used in the V2 Cameras.

The design of this camera will provide superior low-light performance over its predecessor, and by using an external lens you can drastically improve upon the optics.

This camera can find uses in photography, surveillance, astronomy, AI, and a wealth of other applications where high-quality images are required.

The Raspberry Pi High-Quality Camera retails for 50 US dollars, which is double the retail price of the official V2 Camera.  And on top of that, you need to factor in the cost of the lens, adding the 62-dollar 16mm C-mount lens more than doubles the camera price again.

So is the camera worth its relatively high price? Only one way to find out, let’s hook one up and compare it to a few other cameras.  We’ll be doing that shortly.

Adding a Lens

Unlike the previous Raspberry Pi cameras, this new camera requires some assembly before you can use it.

The first step is to install a lens.

The camera is packed in a tiny box that includes a tiny screwdriver for locking the lens assembly in place. The module has a type C-mount thread, and it includes a type CS adapter ring as well as a threaded cap.

I am pairing the module with the 16mm C-mount telephoto lens, an impressive-looking device that is well-packaged and has covers for both ends.

The lens threads securely on to the camera module. Tighten everything securely by hand, but don’t overtighten.

You’ll want to be sure that everything is clean when you put it all together, a photographer’s dust blower bulb and lens brush can come in handy. Be sure to save all of the camera and lens covers.

As a finishing touch, you can use the ¼-inch thread to mount everything on a small desktop tripod.

Other Raspberry Pi Cameras

Of course, there are many other manufacturers producing cameras for the Raspberry Pi, and some of them are pretty innovative.

Most of these cameras use the same 5 and 8-megapixel sensors used on the original Raspberry Pi cameras, this ensures complete compatibility.

Some of the 3rd party cameras are essentially clones of the original designs, usually priced much more competitively. Version 1 cameras (5 megapixels) can often be obtained for around 5 US dollars, making them ideal for a number of exciting projects and applications.

Other models use external lenses, often M12 or CS-mount designs, for improved performance or for special applications.  M12 lenses are particularly popular and you can obtain kits of these lenses to allow you to select the perfect one.

Some other enhancements include IR light sources for night vision applications.

Arducam 8-MP Sony IMX219

One camera I added to the test was the Arducam 8-MP Sony IMX219 camera with a CS-mount lens. 

This camera uses the same sensor as used by the Raspberry Pi camera version 2, with the addition of a CS-mount lens.  The module itself is substantially larger than the original Raspberry Pi cameras.

SainSmart IMX219 Camera Module with Lens

This is a way of “updating” an existing Raspberry Pi V2 camera, it can also be used to repair a camera whose module was damaged.

This is NOT a complete Raspberry Pi camera, rather it is a replacement for the Sony IMX219 module on the camera.  It’s the same sensor with improved optics, in this case, a 160-degree field of video lens is supplied. As the lens uses the M12 thread you can substitute other lenses.

I used this to resurrect a Version 2 module whose lens had been scratched.

Raspberry Pi Hookup

All of the Raspberry Pi cameras use a 15-pin flat ribbon cable to attach the camera to the microcomputer. 

The Camera port on your Raspberry Pi board will vary in location depending upon which model you are using. Raspberry Pi Zero users will require an adapter cable, as these microcomputer boards use smaller camera connectors.

Of course, it probably goes without saying that you should power off the Raspberry Pi before connecting or disconnecting the camera!

The cable can be connected and disconnected on both ends, and you can replace the cable supplied with the camera with a longer or shorter one if you wish. Camera cables are available in a variety of lengths.

Inserting the Raspberry Pi Camera cable

The cable has conductors on only one side. On the camera end these conductors should face the camera module circuit board.  On the Raspberry Pi side you’ll need to observe the correct orientation of the cable, on the Model 4 the non-conductive side faces the USB and Ethernet connectors.

The connectors are tiny but quite easy to use, you pull up on the mounting tab to open them and snap it down to secure the cable.  Make sure you orient your cable properly before snapping it down and don’t pull on the mounting tab too hard as it breaks easily.

Raspberry Pi Configuration

If you haven’t used a camera with your Raspberry Pi before then you’ll need to enable it first in the operating system.

Power up the Pi with the camera attached, it should boot normally.

Now click on the “Raspberry” icon on the top left menu bar to open the main menu. From this menu select “Preferences” and from the resulting sub-menu select “Raspberry Pi Configuration”.

In the Configuration box select the Interfaces tab. You’ll observe a list of interfaces along with radio buttons to enable or disable them.

One of the first items is Camera. If it is disabled click the radio button to enable it.  After doing this click the OK button to save your selection.

You’ll need to reboot your Raspberry Pi to have the change take effect, so go ahead and do that now.

Testing the Camera

After rebooting, open a Terminal session by clicking on the Terminal icon on the top menu bar.

At the command prompt type the following:

If all is working you’ll see a camera preview that will cover most of your desktop. You can move the camera around or adjust its focus. After five seconds the Raspberry Pi will capture an image and then shut the preview off.

Command line Camera Test

After you capture an image, open up your File Manager. You should be in your Home directory, and as that’s the same directory you were using in the Terminal window you should now see a test.jpg file.

Click on the test.jpg file to open it, and you’ll view a picture taken by your Raspberry Pi camera.

If you run the command again without editing it you’ll overwrite the existing picture, without warning.  In order to prevent this change “test.jpg” to “test2.jpg” or something else that is unique.

Using the Camera

Now that we have determined that we have a working camera let’s explore a bit more how to use it.

Note that all of the commands and instructions here will work with any Raspberry Pi Camera, they aren’t limited to the High Quality Camera.

Using the Camera from the Command Line

You should already have a Terminal window open, if not then open one now by clicking the icon on the top menu bar. You’ll be at a command prompt in your Home directory when it opens.  This is called the CLI, or Command Line Interface.

The raspistill Utility

We have already used the raspistill utility in the CLI to take a picture with our camera.  We did it by issuing the following command:

We essentially told raspistill to produce an output (-o) named test.jpg. It gave us a five second preview and then did exactly that.

If five seconds wasn’t enough time to get everything in focus we can extend it as long as we want using a “-t” parameter. Something like this:

The “-t” parameter is the preview time in milliseconds, so the above command should give us 20 seconds to get the perfect picture.

Another common issue is that our camera may be upside down or sideways. We can rotate it with the “-rot” parameter:

This turns the image upside down, as “-rot” is the rotation in degrees.

You can also do a horizontal or vertical flip with the “-hf” and “-vf” parameters. Useful when requiring a mirror image. Here are both in one command:

You may also specify the size parameters of the output image as follows:

  • The “-w” parameter sets the width in pixels, in a range of 64-1920.
  • The “-h” parameter sets the height in pixels, in a range of 64-1080.

An example is this:

These are just some of the many parameters you can pass to raspistill. For a full list just type:

The raspivid Utility

The raspivid utility is another CLI utility for working with the camera. This utility, as its name implies, works with video.

Try this out at the command line:

This should record a video about three seconds long. To change the length of the video recording you may use the “-t” parameter, just as we did with the raspistill utility:

This will increase the recording time to 10 seconds.

As with raspistill there are a wealth of parameters available with raspivid. To see them type:

Converting to MP4

You’ll notice that the videos produced using raspivid are in “.h264” format, which is not recognized by many popular video players. In order to convert these files to a more common format, such as MP4,you’ll need to pass them through a conversion utility.

You can use a conversion utility on your workstation (Windows, Linux or Mac) or you could install a conversion utility on the Raspberry Pi. An advantage of doing it this way is that you can call the conversion utility from the command line. This is useful if you are writing a script to take videos and store them somewhere.

The MP4Box utility is a good way to do this.

You can install MP4Box at the command line as follows:

Once it is installed you can use it to convert the .h264 files into .mp4 files.

First lets create a new video file using raspivid:

A few new parameters here:

  • Width specified with -w
  • Height specified with -h
  • Bitrate specified with “-b
  • Frames per Second specified with -fps
  • Preview Window size and location specified with -p

Now that we have a video lets convert it using MP4Box:

We now have an MP4 video. We can delete the .h264 video if we wish to:

The remaining MP4 video can be played on almost any video player.

Using the Camera from Python Programs

As we have seen we can gain a lot of control over the camera at the command line using utilities like raspistill and raspivid. We can use these utilities within our own batch files and scripts to automate camera procedures.

But to take the camera automation a step further we will need to start using the camera in our Python programs. This way we can write sophisticated applications that incorporate the camera.

The PiCamera Library

The key to working with the camera in Python is to use the PiCamera library.

If you are using the latest version of the Raspberry Pi Operating System (formerly known as “Raspbian”) you likely have the PiCamera library installed already.

If you are using an older version of Raspbian then you can install PiCamera from the command line. Open your Terminal and type the following at the command prompt:

Now open the Thonny IDE for Python by clicking on the main menu (the “Raspberry” icon at the top of the screen), going to the Programming sub-menu and choosing Thonny.

Now insert the following code:

This program imports the PiCamera library, as well as the sleep functions of the time library.

We define an object that represents the camera and then use the start_preview function to display a preview image.

After a 10-second delay, we execute a stop_preview to close the preview image.

Run the program using the Run (arrow) key in Thonny. You should observe a ten-second preview of your camera. After ten seconds elapses the preview closes. No picture is taken.

Saving a Picture

To take a picture using the PiCamera library load the following code into a New document in Thonny IDE:

We begin the code in the same way as the last program, importing the required libraries and defining an object to represent our camera.

We then do a preview, as we did before, using the start_preview function.

A five-second delay is implemented to give you time to adjust the picture.  Then the capture function is used to capture the image to a file.  After that the preview is stopped and the program ends.

This program essentially does what we did originally with the raspistill utility on the command line.

Saving a Series of Images

You may want to save a sequence of images in your Python program, this could be useful in a time-lapse photography application.

A way to accomplish this is to create a loop with a time delay inside it, and take the picture at the end of each loop iteration. We also need to give each image an unique name, otherwise they will just overwrite each other.

This code accomplishes our objective.  Open it in a new Thonny tab.

We start again by importing the same libraries, then we define an object to represent our camera.  We then open a preview of the camera.

Next, we enter a loop with 5 iterations, represented by the variable “i”.  Within each iteration, we sleep for 5 seconds and then capture an image.

Note the format of the image name, the “%s” is replaced by the value of “i” on each iteration to give each file a distinct name.

After exiting the loop we close the preview and end the program.

Capturing Video

The PiCamera library makes capturing video in Python quite simple.  A basic program for doing this is shown below:

This time we are only using the PiCamera library, as we are going to use a different method of delaying the recording.  We also set the video resolution and then open a preview.

Next, we use the start_recording function and pass it a filename as a parameter.  This is all that is required to start recording video to a file.

Instead of using sleep we use the wait_recording function. This function will monitor the available disk space and abort if it is insufficient, whereas sleep will ignore it.

Raspberry Pi Camera with Python

After that we issue a stop_recording command to end the recording and close the file.  We then stop the preview and exit the program.

Running this should produce a one minute video clip. You can play with the wait_recording function to increase the recording time and you can use MP4Box to convert the recording into an MP4 file.

PiCameraApp Utility

You may want a GUI to manipulate the camera instead of using the command line or writing Python code. 

There are a couple of apps capable of making working with the carera easier. One thing to note however is that most of them are pretty old, so they may not handle all of the features of the new Raspberry Pi High Quality Camera.

  • RPICameraGUI is a simple GUI written for Python 2.7. It has not been updated for over seven years.  Basically this is a GUI front-end for raspistill.
  • Pi-Vision is also seven years old, it is a GUI for most of the Pi Camera functions.
  • PiCameraApp is a full-featured GUI that has been updated a few times since its release five years ago.

PiCameraApp seems like the best choice, so I’m going to install it on my Raspberry Pi.

Installing PiCameraApp

You may download PiCameraApp from Bill Williams page on GitHub.  Once you have the ZIP file downloaded you can extract it into a folder of your choice, I used my home directory.  I extracted the file using the Raspberry Pi File Manager.

From the File Manager, you can open a Terminal while you are in the new directory, or you could just open a Terminal in the conventional fashion and navigate to the directory you extracted the files to.

Once you are in the directory type the following to run PiCameraApp:

The GUI shows its age a bit but you will find it to be very full-featured, allowing you to control almost every aspect of the camera.

I found that the preview window ended up in the corner of my desktop, instead of within the app itself. I assume this may be a result of the software not having a recent update.

But otherwise, this application seems to have a wealth of controls for taking pictures and videos.

Streaming Media with VLC

Streaming video from the Raspberry Pi to players on your network is a very common requirement. You can use this feature when setting up a surveillance camera application.

One way to do this is to use the powerful VLC Media Player. In addition to all of its media playing abilities VLC also allows you to record and stream video. And you can control VLC right from the command line, allowing you to incorporate streaming into your custom scripts.

Installing VLC on the Raspberry Pi

Installing the VLC Media Player on the Raspberry Pi is pretty easy.

Open up a Terminal (from the icon at the top of the screen) and type the following:

This will install VLC on your Raspberry Pi.

Setting up Streaming

Before we set up streaming we will need to know the IP address assigned to the Raspberry Pi.  At the command prompt in the Terminal type the following:

This will print out a wealth of information regarding your network connection(s).  You’ll find the IP Address for your wired ethernet connection in the “eth0” group, and for wireless connections in the “wlan0” group.

Make note of the address as you’ll need it to view the stream.

Now we can configure VLC to stream from the camera. Type in the following:

This is actually the raspivid command piped into the cvlc command, so there are a lot of parameters here.

For raspivid:

  • -o is piped to stdout instead of a file.
  • -t is set to 0 so the stream does not timeout.
  • – w and – h set up the video as 640 x 480. Always best to start low and bump up the resolution after everything is working.
  • -fps is set for 12 frames per second.

For cvlc:

  • -vvv specifies the stream location as being the stdin.
  • -sout is the output stream, set to port 8080 with an h.264 codec.

This should start the stream.

Viewing the Stream

The easiest way to view the stream from a remote computer, phone or tablet is to, once again, use VLC Media Player. It is available for virtually every computer and mobile platform.

On your device open the VLC Player and go to the Media menu item. Then select “Open a Network Stream” and type the following:

The <RASPI IP ADDRESS> is the IP address of your Raspberry Pi, which you determined earlier using ifconfig.

You should now see the stream. It is common to have a bit of lag, you can improve performance by using a wired ethernet connection and by lowering the resolution or framerate.  Experiment and see what works best for you.

Camera Tests

So now the moment of truth, where we compare the images from the different camera modules to see which one would be the most suitable for our application.

The Raspberry Pi High Quality Camera is certainly an impressive piece of hardware but it is also an expensive peripheral for a single board computer.  Is it actually worth the money?

Does adding a lens to the existing designs really improve their performance? Or is the small built-in lens on the Version 1 and Version 2 cameras sufficient?

And how do these cameras stack up against an actual consumer camera?

Let’s find out!

Camera Test Setup

Not having access to a professional testing lab I decided to create my own testing area in the workshop. The idea here, after all, was just to compare the cameras, I wasn’t actually measuring any specifications or performance ratings.

I printed out a couple of test targets to compare the cameras with, one was a black-and-white test pattern and the other was a collection of color blocks. Obviously the printers I used to print these, as well as the paper that they are printed upon, come into play here. Again I’m not trying to establish performance readings, I’m just seeing how everything looks in comparison.

As a reference I also compared results with a proper camera, a Canon EOS M100 mirrorless camera. In this case the comparison is quite unfair as the Canon has a 24.2 megapixel sensor, which is double the size of the Raspberry Pi High Quality Camera.  Not to mention that the Canon is a real camera and is much more expensive than the Raspberry Pi!  Again I’m interested to see the difference.

For reference I’ll be using the lights in my workshop as the primary illumination source. They are all LED lights and are rated at a color temperature of 4000 K.  I will also be supplementing this with my LED Worklight, which has a similar color frequency.

As I want to try and maintain some consistency I’ll be mounting all of the cameras onto a tripod. The Canon camera and the Raspberry Pi HQ Camera both come with ¼-inch threads for tripod mounting, the other modules don’t.  

To resolve that I built a small test jig with a piece of perfboard and a number of spacers to mount the cameras onto. I used two sets of spacers with different heights to accommodate the official Raspberry Pi cameras and the Arducam camera.  I then mounted the perfboard onto a ¼-inch GoPro tripod adapter. 

Cameras Tested

Here are the cameras I’ll be testing:

  • Canon EOS M100 Mirrorless camera – This is the “Reference Camera” and is (obviously) not a Raspberry Pi camera!
  • Raspberry Pi HQ Camera – With 16mm lens.
  • Raspberry Pi Version 1 Camera – IR filter version
  • Raspberry Pi Version 2 Camera – NOIR version
  • Raspberry Pi Version 2 Camera – Modified with SainSmart lens module
  • Arducam 8-MP – With lens

Testing Scheme

Again nothing professional or scientific here. I’m going to do a set of three still pictures plus one video to test each camera.  While I’ll attempt to frame them in a similar fashion I’m somewhat limited here as the lens arrangement differences make that a challenge.

  • Focus Image – I’ll focus the camera as best as I can manually on the black-and-white test pattern.  
  • Color in High Light Image – I’ll focus the camera as best as I can manually on the color blocks image. All of the workshop lights will be on and additional illumination will be provided by my desk work lamp.
  • Color in Low Light Image – I’ll focus the camera as best as I can manually on the color blocks image. All of the workshop lights will be off, the only source of light will be from the adjacent rooms on two sides of the workshop.
  • Video Test – I’ll film myself along with my “test target” for a short video without sound.

These tests should hopefully serve to illustrate the differences between the camera modules.  They will also demonstrate the effect that a lens can have on the image.

Test Results

Here are the results of the camera module tests.  If you wish you can click on the images to get the original (full-size uncompressed) versions.

Canon EOS M100

As expected the reference camera does a pretty good job, which it had better do as it’s an actual camera!

I filmed two sets of images. Initially, I set up the ISO of the camera manually to 400 and used an F-stop setting of 5.6. That produced a nice image for the Focus and Color High tests, but the image was not visible for the low light tests.

Therefore I did a second round of tests using the camera’s “Auto ISO” feature.  This time I was able to obtain an image in the low light environment.

In all cases, the focus was done manually.

Canon EOS M100 - color

Canon EOS M100 - focus

Canon EOS M100 - low light

Raspberry Pi HQ Camera Module with Lens

The HQ camera produces a very nice image, certainly the best one out of all the Raspberry Pi cameras and impressively comparable to the Canon EOS M100.  But as it is also the most expensive camera you would expect that. In fact the camera and lens retail for more than all the other camera modules combined!

The 16mm lens had a nice, professional feel and the settings could be screw-locked to preserve them. One of the adjustments controls the F-Stop. The other one is marked for distance but didn’t seem to zoom. Instead it serves as a focus adjustment, which surprised me as I expected a zoom function.

This camera also had the best low-light performance.

Pi HQ - color

Pi HQ - focus

Pi HQ - low light

Raspberry Pi V1 Camera Module

The 5-megapixel Raspberry Pi Camera V1 had a surprisingly good image, although the white balance seems a bit off.  It also had the most difficulty in low light.

It’s a fixed-focus lens but the initial setting seemed fine and I didn’t have to change it.

Pi V1 - color

Pi V1 - focus

Pi V1 - low light

Raspberry Pi V2 Camera NOIR Module

The V2 Camera also performed well, and it’s white balance was excellent.  The picture was fairly linear on all corners.

The fixed focus was an annoyance, especially as I can’t find that little ring they sometimes give away to adjust it! So I’m afraid the images are not perfectly focused. I will say, however, that the focus stays pretty constant while changing distance from the subject to the camera, which is great.

Low light performance was good, to be expected for a camera that can also see in infrared.

Pi V2 - color

Pi V2 - focus

Pi V2 - low light

Raspberry Pi V2 Modified with Lens

This test required a bit of camera surgery first.

The module replaces the existing Sony IMX219 module, so you’ll need to remove that first. Fortunately, this is very simple. You’ll probably find your module is held down with two-sided tape or an adhesive that you’ll need to remove. Then you can just pull it off, all of the electrical connections are on a very tiny ribbon cable with an even tinier plug on the end.

Then you can mount the SainSmart camera module. It comes affixed to one side of a double-sided tape, you’ll need to peel the backing off the other side, plug it into the socket and press it down to fasten.

After that, it’s just another V2 camera, at least as far as hookup goes.

As the lens provided by SainSmart is a 160-degree wide-angle lens you’ll get a “fishbowl” view. 

Pi V2 with Lens - color

Pi V2 with Lens - focus

Pi V2 with Lens - low light

Arducam 8-MP Module with Lens

The lens provided with the Arducam I purchased is a wide-angle lens, and all of the images reflect that. So when judging the camera quality (as opposed to lens performance) you’ll want to focus on the center of the images. 

Interestingly when this camera was mounted with the ribbon cable coming out of the bottom the image was upside down. The other camera modules were mounted the same way with the image right side up.  Of course, you can just invert it in software, so it really isn’t a big issue, perhaps the lens is causing the inversion or maybe the sensor is just mounted upside down!

The color balance and white balance all looked reasonably good, as was the low-light performance.  As it uses a wide-angle lens the image is stretched at the corners, this would be a nice camera to use in a security or surveillance application.

Arducam - color

Arducam - focus

Arducam - low light

Video Tests

I also tested the video performance of each camera.

I mounted the cameras onto a full-sized tripod and shot a quick video of myself along with my “focus target”, a device I use myself to assist in creating videos.

Because of the different pixel densities, the images from each camera covered a different view. Everything was shot in 1920 x 1080 with a framerate of 30 fps.

You can check out the video to see how the cameras performed.


The availability of a variety of inexpensive cameras makes the Raspberry Pi a real winner when it comes to applications that require video.  With camera capabilities on even the 5-dollar Raspberry Pi Zero and cameras also available for the same price there is really no excuse not to have video in your next design.

As we’ve seen it is easy to use the cameras from the command line or within your Python programs, so you can really customize them to suit your needs perfectly.

The Raspberry Pi High Quality (HQ) Camera opens up even more applications for the Raspberry Pi. Possible uses include nature or time-lapse photography, astronomy (using a telescope instead of a lens), and video conferencing.  For high-end applications like this, I think it is worth the price.

The cameras that have interchangeable lenses offer a number of great surveillance possibilities, and the NOIR versions of the cameras would be perfect for security systems.

Even the inexpensive 5-megapixel Version 1 cameras have a number of uses, including object recognition and, of course, robotics.

While 4K video isn’t possible right now you can still get a great HD image from even the most inexpensive camera, so adding quality video to your project has never been simpler. 

Whatever your application, there’s a Raspberry Pi Camera that will be perfect for it!


Parts List

Here are some components that you might need to complete the experiments in this article. Please note that some of these links may be affiliate links, and the DroneBot Workshop may receive a commission on your purchases. This does not increase the cost to you and is a method of supporting this ad-free website.




Code in this article – The Python routines I used here in a ZIP file.

Raspberry Pi HQ camera – The official Raspberry Pi website page.



Raspberry Pi Cameras – the BIG Picture
Raspberry Pi Cameras - The BIG Picture
Article Name
Raspberry Pi Cameras - The BIG Picture
The Raspberry Pi Camera is a versatile and easy to use device. In this article, we will see how it works and how to use it with the Raspberry Pi. We will also compare the image quality of several popular Pi cameras.
Publisher Name
DroneBot Workshop
Publisher Logo
Notify of

Inline Feedbacks
View all comments
Speedy Gonzales
4 years ago

Thank you for the very educational and detailed video and text.

dave dorhlas
4 years ago

Couldn’t find a hot link to actually sign up for your newsletter on your newsletter page..You might want to add more than one really.

Bob Vines
4 years ago


The code for this article is missing. RESOURCES says it should be in a ZIP file.



3 years ago

How do I bui the camera..??

3 years ago

Can Pi cameras work with other microcontrollers?

Mitch Baldwin
3 years ago

Another excellent analysis and tutorial. Thank you!

3 years ago

Thanks for the your great guide!

Don Schweitzer
3 years ago

Very helpful to have the cross reference between the Canon and the HQ. Appreciate your dedication and delivery.

John Salazar
3 years ago

lots of good info. How do I get rid of the “post comment” bubble so I can print an unblemished copy to study at my leisure?

2 years ago

Can the pi camera be implemented as 2-d sensor?

Jahangir Ali
2 years ago

code link is missing sir

2 years ago

VLC is indeed a wonderful multimedia player application that has a capability to play videos of any format. It can even play odd encrypted files on any device