-
Notifications
You must be signed in to change notification settings - Fork 13
/
helperVideoPlayerSet.m
72 lines (53 loc) · 2.49 KB
/
helperVideoPlayerSet.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
%helperVideoPlayerSet manage multiple video displays
% helperVideoPlayerSet is a helper class to help organize displays for the
% MonoCameraExample.
classdef helperVideoPlayerSet
properties (SetAccess='private', GetAccess='public')
Players;
end
methods
%------------------------------------------------------------------
% Constructor
%------------------------------------------------------------------
function this = helperVideoPlayerSet(images, titles)
% Validate inputs
validateattributes(images, {'cell'}, {'row'});
if nargin == 2
validateattributes(titles, {'cell'}, {'row'});
if(numel(images) ~= numel(titles))
error('Number of images must equal to number of display titles');
end
else
titles=cell(1,numel(images));
end
% Set up players
sz = get(0, 'ScreenSize');
screenMargin = [50, 10]; % [left, top]
sizes = cellfun(@size, images,'UniformOutput',false);
sizes = cell2mat(sizes);
maxHeightInSet = max(sizes(1:3:end));
offset = maxHeightInSet + (sz(4)-maxHeightInSet)/2; % middle of screen for tallest window
% sz(4) can be fractional; hence, the round is on the entire 'location' vector
location = round([screenMargin(1), sz(4)-screenMargin(2)-offset]);
for i=1:numel(images)
this.Players{i} = ...
vision.DeployableVideoPlayer('Location', location,...
'Name', [num2str(i), ': ', titles{i}]);
% Set up next location; for simplicity, go right
location = location + [10 + size(images{i}, 2), 0];
end
end
end
methods (Access='public')
%------------------------------------------------------------------
function update(this, cellImages)
for i=1:numel(cellImages)
this.Players{i}.step(cellImages{i});
end
end
%------------------------------------------------------------------
function out = isOpen(this, idx)
out = this.Players{idx}.isOpen();
end
end
end