Can Arduino handle webcam-like processing?

English is not my first language so i do apologize if my wording are incorrect:

Hi! im currently doing a self project where i can use an Arduino Mega 2560 in a simple robotic car with a camera connected to internet which will then send it to my cellphone maybe mobile app where i can watch what my arduino car seeing wirelessly(or by bluetooth if not wifi like esp).

so i encounter 2 problem:

  1. i heard that arduino cannot handle video streaming, facial recognition, image processing. so i shouldn't be able to do what i want to do...

  2. BUT i saw some products called "OV7670 CMOS Camera Module Len" which is a product that literally meant for Arduino, not raspberry or something that known suitable for camera handling. im planning to use this if it doable, but the first problem insist so i have doubt if it works.

so my question is, is it really impossible for Arduino to handle video or webcam viewing? if no, why this kind of product exist(i saw a lot of shops sell those)?

note: my only goal has no facial recognition, image processing and such. really just viewing what the camera can see. not video recording or picturing that will save to arduino memory or something because it will directly transfer to your mobile phone. I also do not currently own OV7670 and due to pandemic and health protocols of what shop should be open or not, i cant easily buy outside to test it...

hope you can give me insights regarding about this.
best regard, Leocann

Product Link:

You are Filipino or from the Philippines, yes? You can try buying one from Makerlab, Egizmo or Circuitrocks

It is possible as there are already a lot of videos in YouTube demonstrating that Arduino is more than capable using a webcam and display it's feed.

Are you telling us that you want to transfer the feed coming from your camera module directly to your phone in real-time?

on your third sentence/pharagraph. i believe real time is the correct term. its like video chat where whatever frame/webcamera video will be taken then will be sent towards the phone wirelessly using a mobile application(if there is one like for bluetooth rc control car) or custom application. probably will connect to internet then towards to phone if it require ESP(ex: ESP 8266-01 i havent try this btw) to display the feedback from the camera

Which type of Arduino are you talking of?
Standard classic Arduinos are absolutely not capable of using a webcam and display its feed.

I do admit I choose some vague sets of words to describe what I'm saying. For webcams, I meant the OV7670 CMOS Camera Module op was referring to or similar camera modules and "display its feed" meaning displaying it on the screen as seen in some YouTube videos below:

There's also this tutorial that op is specifically looking for:

I'm curious, however as to what your reason/s for saying that Standard classic Arduinos to be not capable of doing so? If you are referring to "classic" or early model of Arduino, perhaps.

As a suggestion, do highlight the sentence/paragraph you're referring to and press the "Quote" button so future readers won't be confuse.

I think I found you one such tutorial that could bring some light into what you're trying to do:

Personally, I suggest you go for ESP32 instead for WiFi or a chip that can do Bluetooth 4.0 or above to increase data transfer or minimize current consumption (HM-10 bluetooth module or nRF52 series such as in the Arduino BLE sense)

VGA (which is an absolutely crappy format nowadays) has 307200 pixels,
that the poor Arduino has to move twice for each frame,
with a screwed up color depth of 256 colors and 30 frames,
you have to move 18432000 bytes per second, disregarding any overhead
which would be really hard to achieve, if possible at all.

Yeah, that was on my mind as well but seeing the videos I provided, including the Instructable tutorial made me realized it is still possible.

So given the OPs requirement to stream video from a Mega 2560, what screen resolution and frame refresh rate would the Mega be capable of ?

I'm sure you notice the difference between webcam and Arduino camera?

Yeah, I did admit that on my response above.

How many cycles per byte do you need to grab a byte and store it into a video buffer?

Streaming is a different additional/alternative pressure,
a Mega can not transfer TCP/IP without shields.

Does the OVwhatever module provide jpg output?
If not you have to compress the video data before sending,
at least for standard streams.

That's what I'm curious to know as well. The tutorial I provided did suggest 320x240 resolution but no refresh rate but reading op's question, it's more of a feasibility question building such project but hopefully the tutorial can be assurance and a stepping stone to start.

Given the price of an ESP32-CAM module, any investment in Arduinos is futile.

That module is capable of face recognition also.

Historically, any streaming video was outside of the Arduino's capability. Now things are more blurry with devices like the Teensy, feather, ESPxx that you can use like an Arduino.

I'd still use a Pi for video though.

These are not Arduinos, but SBCs that use the Arduino environment.

I've never seen anyone refer to these boards as SBCs before now. As wildbill says, the line becomes blurred at some point, but I still wouldn't consider any of those to be single board computers

I have seen very bad instructable tutorials,
I think it's even the worst place to look for working examples IMHO.

Most have only one board and are capable of stand-alone computing,
but I'm in no way fixated to that term. How about MCU then?

What is an Arduino from the view of the Arduino team?

The MCU is the microcontroller alone. I would call them "microcontroller development boards".

From a bureaucratic standpoint, Arduino is a registered trademark. But of course it has also become a term used to describe this entire movement of making embedded systems accessible to everyone, and for all the various components of that movement.

There are specific official guidelines regarding how to use the term "Arduino" when referring to 3rd party hardware products here:

I do sometimes say "Arduino board" when providing support here on the forum even when I know that the person I'm helping is using a 3rd party board in cases where I feel that phrase will be the easiest one for them to understand.

I try to avoid calling a board an "Arduino" because it's an ambiguous term due to the many things the solitary word "Arduino" is used to refer to:

  • The movement
  • The community
  • The company
  • The IDE
  • The hardware products
  • The programming language