Cameras on the Windows Platform
If you click the start menu on Windows 10, you will probably find an app called “Camera.” On a laptop, the app shows the built-in front-facing camera with some simple controls, but how would you use a camera on the desktop end?
Aside from a built-in webcam, there are several other hardware solutions to use a camera module on Windows 10. The most common way is to use an external USB webcam, and manufacturers like Logitech has made a ton of HD webcams for video streaming and conferencing.
Another software application is to use the desktop as a client to receive the streaming video from Ethernet (like IP cameras) or a GStreamer pipeline. It’s seen a lot where the desktop only shows, processes and analyses the image data captured from another device, especially embedded devices like the Raspberry Pi. Arducam MIPI camera modules for Raspberry Pi provides a Gstreamer example in which it outputs H.264 video stream to stdout, and uses Gstreamer to push the stream to PC.
Use a camera on Window desktop: hardware solutions
This post will mainly focus on the hardware solution, and more specifically, how to use an external USB camera solution on a Windows desktop. Like any hardware attached to a computer, there are two kinds of USB camera solutions: one is plug-and-play, the other needs drivers.
To speak in the language of Windows, those are devices that work with the “inbox” drivers and that need “out-of-box” drivers, respectively. Inbox drivers are drivers that Microsoft ships “in the box”, so you can expect devices that work with the inbox driver to be plug-and-play, like a USB flash drive.
The USB cameras which require extra drivers usually provide more advanced features, like those used for evaluation and development purposes or industrial cameras. Take the Arducam USB camera shield as an example, it allows for control of different camera sensors in the register level.
Plug-and-Play with USB Video Class (UVC) Modules
The Plug-and-Play (PnP) cameras usually translate into standard USB Video Class (UVC) cameras. If a camera is compliant with UVC specification, it’s supported by the inbox UVC driver.
Since the UVC driver is not only included in the Windows system but also Linux, Android and more, the UVC cameras will not be restricted by the platform it’s used on. You can easily migrate a setup to another device or platform.
Here are some links you can refer to when implementing UVC cameras on different platforms.
- Windows: https://docs.microsoft.com/en-us/windows-hardware/drivers/stream/uvc-camera-implementation-guide
- Android: https://source.android.com/devices/camera/external-usb-cameras
- Ubuntu: https://help.ubuntu.com/community/UVC
Arducam offers several kinds of USB UVC camera modules to cover different user needs, which is hard to achieve for a casual webcam.
- Low light cameras for better surveillance of poorly illuminated environments.
- Wide Dynamic Range cameras for shooting under high contrast.
- Dual cam IR/VL camera for Face Recognition and Biological Detection
- Autofocus camera module for shooting objects close and far away on the same camera.
- Raspberry Pi camera module V2 like 8MP IMX219 Camera in USB interface
Have Flexibility with USB Camera Shields
If you are confident about the expected performance and the image sensor you will be using, you can go with a ready-to-use USB UVC camera module. However, there are some other cases in which you are still choosing from a series of camera sensors. Since the UVC cameras on the market might not cover all the sensors in your list, it’s not practical to buy each camera sensor as a UVC device. If this becomes an issue for you, give the USB camera development tools a try.
The camera development tools allow you to quickly evaluate, prototype and develop your camera applications with a USB connection. Those kits or boards usually come with a chip to convert the camera in different interfaces to USB and enable you to toggle the camera sensor from the register level. As a device that is not made for a certain type of image sensor, the USB camera development tools always use a private driver for the general-purpose use and advanced controls.
The Arducam USB camera shields are one of those USB camera development tools. It supports a wide range of MIPI and parallel interface image sensors ranging from 0.3MP to 18MP and higher, including both global and rolling shutter sensors. The camera shield comes with a comprehensive software SDK library and example source code you need to make it work on Windows and Linux systems. It comes in two versions with different bandwidth, respectively USB2.0 camera shield and USB3.0 camera shield.
Computer Vision on Microsoft Windows
Although there is a trend to add computer vision to programs with an API call from the cloud, a Windows desktop device is still a preferred platform for high-performance offline and edge computing. Unlike an embedded system, the processing power of a Windows desktop provides more possibilities.
Ordinary users are much more familiar with Windows than other operating systems, and it would be easier for them to use a Windows graphical user interface program in a computer vision application. Many industrial-camera manufactures also put their major efforts into developing and maintaining window SDK and programs.