The above code is used for analying 3 videos. Now i want to cahnge the static video into web cam inputs. how can i do this
Live Video processing and analysing
17 views (last 30 days)
Show older comments
mov=aviread('mov.avi');
mov1 = 'mov.avi';
fileinfo = aviinfo(mov1);
for x = 1:fileinfo.NumFrames
[im1,map] = frame2im(mov(x));
imshow(im1);
pause(1);
startpos_E = 74.963269;
startpos_N = 32.732582;
endpos_E = 75.357845;
endpos_N = 33.075700;
[a b c] = size(im1);
disp (a);
disp (b);
[x,y] = ginput(1);
disp (x); disp (y);
lon1 = startpos_E + ((endpos_E - startpos_E)*y)/b;
lat1 = startpos_N + ((endpos_N - startpos_N)*(a-x))/a;
[x,y] = ginput(1);
disp (x); disp (y);
lon2 = startpos_E + ((endpos_E - startpos_E)*y)/b;
lat2 = startpos_N + ((endpos_N - startpos_N)*(a-x))/a;
fid = fopen('text.txt', 'wt');
fprintf(fid,'\n Pixel position is %i & %i',x,y);
fprintf(fid,'\n %i E ',lon1);
fprintf(fid,'%i N',lat1);
fprintf(fid,'\n %i E ',lon2);
fprintf(fid,'%i N',lat2);
if abs(lat1)>90 | abs(lat2)>90
error('Input latitudes must be between -90 and 90 degrees, inclusive.')
end
a = 6378137;
b = 6356752.31424518;
lat1 = lat1 * 0.0174532925199433;
lon1 = lon1 * 0.0174532925199433;
lat2 = lat2 * 0.0174532925199433;
lon2 = lon2 * 0.0174532925199433;
if abs(pi/2-abs(lat1)) < 1e-10;
lat1 = sign(lat1)*(pi/2-(1e-10));
end
if abs(pi/2-abs(lat2)) < 1e-10;
lat2 = sign(lat2)*(pi/2-(1e-10));
end
f = (a-b)/a;
U1 = atan((1-f)*tan(lat1));
U2 = atan((1-f)*tan(lat2));
lon1 = mod(lon1,2*pi);
lon2 = mod(lon2,2*pi);
L = abs(lon2-lon1);
if L > pi
L = 2*pi - L;
end
lambda = L;
lambdaold = 0;
itercount = 0;
while ~itercount | abs(lambda-lambdaold) > 1e-12
itercount = itercount+1;
if itercount > 50
warning('Points are essentially antipodal. Precision may be reduced slightly.');
lambda = pi;
break
end
lambdaold = lambda;
sinsigma = sqrt((cos(U2)*sin(lambda))^2+(cos(U1)*...
sin(U2)-sin(U1)*cos(U2)*cos(lambda))^2);
cossigma = sin(U1)*sin(U2)+cos(U1)*cos(U2)*cos(lambda);
sigma = atan2(sinsigma,cossigma);
alpha = asin(cos(U1)*cos(U2)*sin(lambda)/sin(sigma));
cos2sigmam = cos(sigma)-2*sin(U1)*sin(U2)/cos(alpha)^2;
C = f/16*cos(alpha)^2*(4+f*(4-3*cos(alpha)^2));
lambda = L+(1-C)*f*sin(alpha)*(sigma+C*sin(sigma)*...
(cos2sigmam+C*cos(sigma)*(-1+2*cos2sigmam^2)));
if lambda > pi
warning('Points are essentially antipodal. Precision may be reduced slightly.');
lambda = pi;
break
end
end
u2 = cos(alpha)^2*(a^2-b^2)/b^2;
A = 1+u2/16384*(4096+u2*(-768+u2*(320-175*u2)));
B = u2/1024*(256+u2*(-128+u2*(74-47*u2)));
deltasigma = B*sin(sigma)*(cos2sigmam+B/4*(cos(sigma)*(-1+2*cos2sigmam^2)...
-B/6*cos2sigmam*(-3+4*sin(sigma)^2)*(-3+4*cos2sigmam^2)));
s = b*A*(sigma-deltasigma);
fprintf(fid,'\n distance is %i m', s);
fclose(fid);
winopen('text.txt')
end
Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!