MATLAB Answers

Ashish Uthama
5

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

Asked by Ashish Uthama
on 20 Jul 2011
Latest activity Edited by Tiwa Romuald
on 15 Oct 2015

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
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 ?

Products

No products are associated with this question.

5 Answers

Answer by Ashish Uthama
on 20 Jul 2011
 Accepted answer

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!)

  8 Comments

Walter Roberson
on 9 Mar 2013
set(fh, 'CData', rgb2gra(ss));

And be sure that you have done

 colormap(gray(256))

after the original image() call.

Joshua
on 22 Jul 2013

I'm using a GoPro HD camera which has a URL via an Ambarella video player as http://10.5.5.9:8080/live/amba.m3u8. This is the network address to play in a VLC player. I want to use Matlab for further processing options.

What's the purpose of the .jpg string of the url input? I use the same code as above for the iPhone and Android with the '.jpg' extension on my URL and get the error message...

Error using imread (line 331) Can't read URL "http://10.5.5.9:8080/live/amba.m3u8.jpg".

Current input in command window is url = 'http://10.5.5.9:8080/live/amba.m3u8.jpg'; ss = imread(url); fh = image(ss);

while(1) ss = imread(url); set(fh,'CData',ss); drawnow; end


Answer by 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

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
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
on 15 Oct 2015

hi, please how can i save the video from this function? thank you best regard


Answer by 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
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
on 6 Sep 2015

ipcam() was not introduced until R2015a, a year after amro posted their Answer.

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


Answer by Amrinder Brar
on 25 Mar 2015
Edited by 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) ?


Answer by 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
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


Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!