Raspberry Pi Camera Comparison

I use a number of Raspberry Pi 3 Model B ARM-based Linux computers to help simplify my day-to-day life. Because I live in an urban area, I have been interested in setting up a security camera that could alert me to any issues that might arise when I’m not in the house. Most recent Raspberry Pis also include a CSI connector, meaning that it is easy to connect a high-resolution camera that can be easily accessed via python or via bash. This would also be helpful for any other computer vision setup, including OctoPrint. Since the Raspberry Pi runs OpenCV, I can use open source computer vision source code to quick and easily setup a security system. The first step is selecting a camera.

I plan on using a Raspberry Pi 3 or Raspberry Pi Zero v1.3 (with camera connector) as the base machine. However, there are a number of 3rd party cameras available. As is often the case, I was not able to find a comparison of the options available online, so today I am going to do a quick and dirty look at the following cameras:

Model Chipset Megapixels Advertised FOV
Raspberry Pi Camera OV5647 5MP 54° (h) x 41° (v)
Raspberry Pi v2 Camera IMX219 8MP 62.2° (h) x 48.8° (v)
Arducam 5MP RPi Camera OV5647 5MP 54° (h) x 41° (v)
Waveshare RPi Camera (I) OV5647 5MP 170°
Waveshare RPi Camera (J) OV5647 5MP 222°
Waveshare RPi Camera IR-CUT OV5647 5MP 75.7°

In this post, I provide some demonstration photos for outdoor, indoor, and low-light scenarios for the modules.

The basic testing rig uses a Raspberry Pi 3 as the processor. I mounted the cameras onto a piece of cardboard so that they would have roughly the same origin and orientation. Images were captured through an SSH connection to my laptop and transferred via scp. Finally, I strapped on a portable battery (AUKEY 12000mAh powerbank) and the entire setup was portable. Since this is a headless machine, I streamed video from the Raspberry Pi to my laptop with the UV4L package to make sure that the image was sharp, especially for the Waveshare cameras, which required some focusing. Here’s a photo of the “test setup”:

Each module has different specifications and features, so it’s worthwhile to weigh the pros and cons when choosing one for your application. All of the modules are effectively plug-and-play with the CSI connector; however, the Waveshare RPi Camera IR-CUT also has a neat feature where the LED signal toggles a mechanical IR filter. This means that with some creative coding, you can use it as a day and night camera (it even includes high power IR LEDs, which I did not include in the comparison shots). However, the image quality is a bit worse and the IR filter is not terribly effective (meaning colors are washed-out in daytime shots).

All photos were taken with:

raspistill -o photo.jpg --vflip --hflip

Here are all of photos in a mosaic for quick comparison:

Image quality for the Raspberry Pi Camera and the Arducam 5MP RPi Camera were practically identical, which would be expected since they share the same sensor and lens setup. The Waveshare RPi Camera IR-CUT was disappointing and even after dialing in the focus there were still regions that were blurry when the IR filter was enabled. I really liked the field-of-view for the Waveshare RPi Camera (I) and Waveshare RPi Camera (J) and the image was quite sharp once the focus was adjusted. These would be ideal cameras for a home security solution. The Raspberry Pi v2 Camera performance was anti-climactic. Its dynamic range appears to be a bit wider, but it would often under-expose photos. This could probably be corrected by adjusting the parameters in raspistill. Bang for buck, the Arducam 5MP RPi Camera is best, but for shear field-of-view, the Waveshare RPi Camera (J) is pretty awesome.

And here are the full-resolution shots in each of the situations:

Outdoor (day)


Raspberry Pi Camera

Arducam 5MP RPi Camera

Waveshare RPi Camera IR-CUT (on)

Waveshare RPi Camera IR-CUT (off)

Waveshare RPi Camera (I)

Waveshare RPi Camera (J)

Raspberry Pi v2 Camera

Outdoor (night)


Raspberry Pi Camera

Arducam 5MP RPi Camera

Waveshare RPi Camera IR-CUT (on)

Waveshare RPi Camera IR-CUT (off)

Waveshare RPi Camera (I)

Waveshare RPi Camera (J)

Raspberry Pi v2 Camera

Indoor (day)


Raspberry Pi Camera

Arducam 5MP RPi Camera

Waveshare RPi Camera IR-CUT (on)

Waveshare RPi Camera IR-CUT (off)

Waveshare RPi Camera (I)

Waveshare RPi Camera (J)

Raspberry Pi v2 Camera

Indoor (night)


Raspberry Pi Camera

Arducam 5MP RPi Camera

Waveshare RPi Camera IR-CUT (on)

Waveshare RPi Camera IR-CUT (off)

Waveshare RPi Camera (I)

Waveshare RPi Camera (J)

Raspberry Pi v2 Camera

17 thoughts to “Raspberry Pi Camera Comparison”

  1. As you have already stated it seems that the RPi2 camera needs a different exposure setting. otherwise I love the extra detail that is in the pictures. Personally I am not enamoured with the fisheye effect of the waveshare images.

  2. Hello,

    I’m a Computer Engineering student at the University of Central Florida and I’m writing a technical paper on my Senior design project. I found some really useful information here and I was hoping to get permission to use some of the images found in this article.

    Thank you

  3. Can you please update and post more photos of the IR Cut in action in comparison to the other cameras? An IR Light source would also be great for this comparison.

  4. Hi. thanks for your thorough comparison of the camera modules for the RPi.

    I’m thinking about using a RPi with one of these modules as a surveillance camera and i want it to be able to capture car license plates at night (Using some IR lighting to illuminate the alley).
    We have a nervy thief who regularly does a comeback in neighborhood.

    I’m trying to not make a wrong purchase and your review is very valuable.

    which one of these modules do you think can capture license plates at night? I’m gonna mount it right on my wall next to the alley and probably mount an IR projector under it.

Leave a Reply to BoxCancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.