How can I play this cubic section in MATLAB?

I dropped a few frames of the video and would like to generate a cube from them, for example, in the following sample:

alt text

I was wondering if a MATLAB function exists to execute such a graph?

+3
source share
1 answer

It is not clear with what format your video frames should start, so I assume that they are loaded into MATLAB as a structural array of movie frames (as described here ). I will create some examples of movie data (one image is repeated 200 times) to show you first how you can load the first frame into the image, and also create an image from the top and side edges of all your frames (for use as the top and side of the cuboid) :

M = repmat(im2frame(imread('peppers.png')),1,200);  %# Sample movie data

nFrames = numel(M);                  %# The number of frames
face1 = frame2im(M(1));              %# Get the image for the front face
[R,C,D] = size(face1);               %# Get the dimensions of the image
face2 = zeros(R,nFrames,3,'uint8');  %# Initialize the image for the side face
face3 = zeros(nFrames,C,3,'uint8');  %# Initialize the image for the top face

for k = 1:nFrames               %# Loop over the frames
  img = frame2im(M(k));         %# Get the image for the current frame
  face2(:,k,:) = img(:,end,:);  %# Copy the side edge to the side face image
  face3(k,:,:) = img(1,:,:);    %# Copy the top edge to the top face image
end

, RGB, . , colormap FRAME2IM, RGB IND2RGB.

SURF:

offset = nFrames/sqrt(2);          %# The offset in pixels between the back
                                   %#   corners and front corners of the
                                   %#   displayed cuboid
surf([0 C; 0 C],...                %# Plot the front face
     [R R; 0 0],...
     [0 0; 0 0],...
     'FaceColor','texturemap',...
     'CData',face1);
hold on;                           %# Add to the existing plot
surf([C C+offset; C C+offset],...  %# Plot the side face
     [R R+offset; 0 offset],...
     [0 0; 0 0],...
     'FaceColor','texturemap',...
     'CData',face2);
surf([0 C; offset C+offset],...    %# Plot the top face
     [R R; R+offset R+offset],...
     [0 0; 0 0],...
     'FaceColor','texturemap',...
     'CData',face3);
axis equal                    %# Make the scale on the x and y axes equal
view(2);                      %# Change the camera view
axis off                      %# Turn off display of the axes
set(gcf,'Color','w'...        %# Scale the figure up
    'Position',[50 50 C+offset+20 R+offset+20]);
set(gca,'Units','pixels',...  %# Scale the axes up
    'Position',[10 10 C+offset R+offset]);

:

alt text

+2

Source: https://habr.com/ru/post/1762858/


All Articles