WebCamera Stream
In this example we will stream the data from the connected web-camera or any other camera-like device and perform real-time image processing
How can I take a photo in WL?
To get the best result make sure wljs-manupulate module is at least v1.2.8 or newer
CurrentImage[]
(*VB[*)(FrontEndRef["00464a90-c955-4c55-8dfe-5f22dfb89cbd"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKGxiYmJkkWhroJluamuqaJAMJi5S0VF3TNCOjlLQkC8vkpBQAedAV3g=="*)(*]VB*)
However, there is a better way if you need to stream the data from a camera continuously:
cam = DeviceOpen["Camera"] cam["FrameRate"] = 30;
RefreshRate[cur = DeviceRead[cam], 1/30.0]
This should go without any lag. If your device support 60, change the code accordingly.
Refresh will not force Wolfram Kernel to work faster, than it can deliver even if you set 1/100.0 update interval.
Basic data-processing
Let's try binarize our images
Refresh[cur = DeviceRead[cam] // Binarize, 1/30.0]

One could also try applying neural network processing, for instance, to identify faces. There is a built-in function for it in Wolfram Language Standard Library:
cur // FindFaces
{Rectangle[{190.5`,244.5`},{310.5`,397.5`}]}
HighlightImage[cur, {Green, Opacity[0.3], %}]
(*VB[*)(FrontEndRef["d667025f-ba56-4807-ae23-8a12a3dc386b"])(*,*)(*"1:eJxTTMoPSmNkYGAoZgESHvk5KRCeEJBwK8rPK3HNS3GtSE0uLUlMykkNVgEKp5iZmRsYmabpJiWamumaWBiY6yamGhnrWiQaGiUapyQbW5glAQB9axVt"*)(*]VB*)
Let's apply this in real-time:
Make sure to stop other widgets by cleaning the output cells
Refresh[HighlightImage[cur = DeviceRead[cam], With[{ faces = FindFaces[cur] }, {Opacity[0.3], Green, If[Length[faces] > 0, First[faces], Rectangle[{0,0}, {0,0}]]} ]], 1/30.0]
