MATLAB Answers

How do I use my smart phone camera as a webcam in MATLAB?

374 views (last 30 days)
I have an smartphone device with a camera. I would like to obtain and process this image data in MATLAB.
(Specifically, I have an Android device).

  1 Comment

Sarah Mahmood
Sarah Mahmood on 3 Jun 2013
is there any other solution that make matlab still running in the foreground, I tried this method yet it require the ip cam to run in the foreground i need matlab to be still running for later image processing. Also is it possible to access the smart phone camera using matlab mobile Specifically to iphone camera ?

Sign in to comment.

Accepted Answer

Ashish Uthama
Ashish Uthama on 20 Jul 2011
The general solution would need two parts, one to broadcast the data from the device and another part to read this data into MATLAB.
A specific solution for Android:
  • Install the free IP Webcam app. (Make sure you read the corresponding permissions and understand any security issues therein)
  • Open the app, set the desired resolution (will impact the speed!)
  • Scroll to the bottom and tap on 'Start Server'
  • In the camera preview window, note the url at the bottom of the screen.
  • Open MATLAB and use this code snippet to obtain a live preview window. Note that this uses JPG files for discrete frames, which is probably not the fastest way. The app can stream the video and/or audio in multiple ways.
url = 'http://<ip address>/shot.jpg';
ss = imread(url);
fh = image(ss);
while(1)
ss = imread(url);
set(fh,'CData',ss);
drawnow;
end
Example:
(If you find faster ways/solutions for other devices, post it here!)

  12 Comments

Show 9 older comments
Pablo sanchez
Pablo sanchez on 24 May 2017
Hola a todos. La propuesta de Ashish Uthama me ha resultado muy bien, el unico detalle es que en la IP se debe agregar el puerto que muestra la imagen en la parte inferior en el dispositivo android.
Saludos.
ban_pro
ban_pro on 5 Oct 2017
Hi Prateek..! Just remove all the connection to your PC except the connection of android and your PC. This error is coming because Your PC is trying to connect to other network and your cam is in other network.
Anupam Bhardwaj
Anupam Bhardwaj on 1 Feb 2018
how can i save a particular frame as an image from this live feed of video from the phone?

Sign in to comment.

More Answers (13)

Soham Bhattacharyya
Soham Bhattacharyya on 16 May 2016
You can use DroidCam if you are using an android phone. You'll need to install OS Generic Video Interface driver.
Hope it helps. :)

  2 Comments

elfodd
elfodd on 15 May 2017
for anyone that can't find the correct address for droidcam simply connect to droidcam using your browser and click on the i button. It should look like this
http://192.168.1.61:4747/mjpegfeed?640x480
and then
camera = ipcam('http://ipaddress:port/mjpegfeed?640x480')

Sign in to comment.


Chirag Gupta
Chirag Gupta on 20 Jul 2011
With the iPhone, using the App suggested by Ashish above (IP Cam), you can achieve the same pretty easily! The code is exactly the same:
url = 'http://<ipaddress>:8020/image.jpg';
ss = imread(url);
fh = image(ss);
while(1)
ss = imread(url);
set(fh,'CData',ss);
drawnow;
end

  5 Comments

Show 2 older comments
Ashish Uthama
Ashish Uthama on 21 Mar 2012
Francisco, you'll get a better answer if you ask this as a new question: http://www.mathworks.com/matlabcentral/answers/questions/new
(also look at http://www.mathworks.com/matlabcentral/fileexchange/28512-simple-color-detection-by-hue for example)
Joshua
Joshua on 22 Jul 2013
is the IP address for the android webcam streaming live video or simply a single image or series of saved images?
Tiwa Romuald
Tiwa Romuald on 15 Oct 2015
hi, please how can i save the video from this function? thank you best regard

Sign in to comment.


amro
amro on 10 May 2014
url=('http://192.168.43.1:8080/shot.jpg?rnd=350264');
hVideoIn = vision.VideoPlayer('Name', 'Final Video');
while(1)
ss=imread(url);
step(hVideoIn,ss)
end

  3 Comments

Haider Ali
Haider Ali on 6 Sep 2015
This works well but i have question that why you did not use IP Camera Image Acquisition? i there any why to use it with ip webcam app
Walter Roberson
Walter Roberson on 6 Sep 2015
ipcam() was not introduced until R2015a, a year after amro posted their Answer.
Tiwa Romuald
Tiwa Romuald on 8 Oct 2015
Hi Hauder Ali, please can you explain how it work on IP camera Image Acquisition. I new in Matlab. thx

Sign in to comment.


PIYUSH KUMAR
PIYUSH KUMAR on 14 Sep 2015
Here's the working code for color detection using android camera:
url = 'http://192.168.0.100:8080/shot.jpg';
framesAcquired = 0;
while (framesAcquired <= 50) % the vedio will work till the 50 video frames, after that the vedio will stop. You can use while(1) for infinite loop
data = imread(url);
framesAcquired = framesAcquired + 1;
diff_im = imsubtract(data(:,:,1), rgb2gray(data)); % subtracting red component from the gray image
diff_im = medfilt2(diff_im, [3 3]); % used in image processing to reduce noise and for filtering
diff_im = im2bw(diff_im,0.18); % convert image to binary image
stats = regionprops(diff_im, 'BoundingBox', 'Centroid'); % measures a set of properties for each connected component in the binary image
drawnow;
imshow(data);
hold on
for object = 1:length(stats)
bb = stats(object).BoundingBox;
bc = stats(object).Centroid;
rectangle('Position',bb,'EdgeColor','b','LineWidth',2)
plot(bc(1),bc(2), '-m+')
end
hold off
end
%stop(vid); % to stop the video
%flushdata(vid); % erase the data video
clear all

  1 Comment

Tiwa Romuald
Tiwa Romuald on 14 Oct 2015
hi PIYUSH KUMAR please this function it's just for a snaphot or video? i would like to have video and save it from my smarphone into matlab. how can I save directly as a AVI video? please help me. thank you

Sign in to comment.


Siddhant Baral
Siddhant Baral on 7 Feb 2018
url = "http: // IP /shot.jpg '; ss = imread (url); fh = imagen (ss); mientras que (1) ss = imread (url); conjunto (FH, 'programable CData', ss); drawNow; fin

  0 Comments

Sign in to comment.


Amrinder Brar
Amrinder Brar on 25 Mar 2015
Edited: Amrinder Brar on 25 Mar 2015
Is there any simple solution to this problem in iphone(i.e. without having to install any third party apps) ?

saras
saras on 1 Jul 2016
I am not sure if this is exactly what you are looking for. However, you can use 'Simulink Support Package for Samsung GALAXY Android Devices' or 'Simulink Support Package for Apple iOS Devices' to access the appropriate smartphone camera. Both these support packages come with a Camera block that allow you to get the Camera data inside MATLAB. You can subsequently connect the Camera block to a Video Viewer block if you would like to visualize the data in Simulink.

  0 Comments

Sign in to comment.


Cristian David Jimenez Bedoya
Edited: Walter Roberson on 5 Dec 2016
buenas, este programa funciona bien pero no he logrado capturar una imagen a partir de este mismo, como puedo obtener una captura de imagen y almacenarla ?
url = "http: // <dirección IP> /shot.jpg ';
ss = imread (url);
fh = imagen (ss);
mientras que (1)
ss = imread (url);
conjunto (FH, 'programable CData', ss);
drawNow;
fin

  2 Comments

Walter Roberson
Walter Roberson on 5 Dec 2016
Approximate translation:
Good, this program works fine but I have not managed to capture an image from this same, how can I get an image capture and store it?

Sign in to comment.


MARIA JAVED
MARIA JAVED on 4 Feb 2017
can anybody tell me that how we can do face detection through Android phone pls help??? i need that code?

  1 Comment

Walter Roberson
Walter Roberson on 6 Feb 2017
You would either have to write the code in MATLAB and use MATLAB Coder, or else you would have to create a Simulink model and deploy that to Android.

Sign in to comment.


Jonathan berry
Jonathan berry on 10 Apr 2017
Hello guys,
I keep having this error:
Error using imread (line 350) Can't read URL "http://MY_IP /shot.jpg".
any help will be appreciated

  2 Comments

Walter Roberson
Walter Roberson on 29 Apr 2018
You need to replace he "MY_IP " part by your actual IP address, such as http://192.168.0.10/shot.jpg

Sign in to comment.


Dilip Dubey
Dilip Dubey on 29 Apr 2018
How can I read other sensors from IP webcam app in Matlab?

  0 Comments

Sign in to comment.


Beril Sirmacek
Beril Sirmacek on 29 Apr 2018
Hi All,
I found out that;
imread('http://MY_IP /shot.jpg');
works only on secured network for me. If I am on a public network, then it gives error.

  2 Comments

Omkar Bhanap
Omkar Bhanap on 8 Aug 2018
How can I extend this to Simulink model? any suggestions?
Walter Roberson
Walter Roberson on 6 Sep 2018
"On Windows platforms, this parameter supports URLs that point to MMS (Microsoft Media Server) streams."

Sign in to comment.


keerthana potharaj
keerthana potharaj on 29 Jan 2019
how do we interface mobile camera for deep learning?
P.S we don't have web cam. pls help us.

  0 Comments

Sign in to comment.

Sign in to answer this question.