【问题标题】:Kinect, Matlab and picture saving with SkeletonKinect、Matlab 和 Skeleton 保存图片
【发布时间】:2016-01-19 20:26:58
【问题描述】:

我正在使用 Matlab 和 Kinect 传感器进行一个项目。我有从 Kinect 传感器拍照进行训练的功能。问题是我想将带有骨架的图片保存在数据集中的图片上,例如视频中显示的。它只保存没有骨架的图片。

我认为错误是关于这一行的某个地方:

imwrite(img, fullfile(fileLocation,sprintf('Picture%d.png', nImages)));

而不是 img 必须是别的东西。

提前谢谢你。

我的代码是:

function Sample(MainFolderName, ObjectFolderName,delay)


if nargin < 3
    delay = 0.1;
end

videoC = videoinput('kinect',1);
videoDepth = videoinput('kinect',2);


%% Skeleton info
triggerconfig(videoDepth,'manual');
videoDepth.FramesPerTrigger=1;
videoDepth.Triggerrepeat=inf;
set(getselectedsource(videoDepth),'TrackingMode','Skeleton')

start(videoDepth);
for i=1:100
    trigger(videoDepth);
    [depthMap,~,depthMetaData]=getdata(videoDepth);
    imshow(depthMap,[0 4000]);
end

%%
skeletonJoint=depthMetaData.JointImageIndices(:,:,depthMetaData.IsSkeletonTracked);
imshow(depthMap,[0 4000]);
hold on; plot(skeletonJoint(:,1),skeletonJoint(:,2),'*');
stop(videoDepth);

%% Draw and track skeleton
triggerconfig(videoC,'manual');
videoC.FramesPerTrigger=1;
videoC.Triggerrepeat=inf;
start(videoDepth);
start(videoC);

%% Create folder with label name
fileLocation = fullfile(MainFolderName,ObjectFolderName);
if ~exist(ObjectFolderName,'file')
   mkdir(fileLocation)
end

%% Take pictures
nImages = 1;
fig = figure('Name','Pictures for training','NumberTitle','off');
ax = axes('Parent',fig);
try
    while ishandle(fig)
        pause(delay);
        trigger(videoC);
        trigger(videoDepth);
%         [frameDataColor] = getdata(videoUlaz);
          img = getdata(videoC);
%         image = frameDataColor(:,:);
    [depthMap,~,depthMetaData]=getdata(videoDepth);
    if sum(depthMetaData.IsSkeletonTracked)>0
        skeletonJoints=depthMetaData.JointImageIndices(:,:,depthMetaData.IsSkeletonTracked);
          util_skeletonViewer(skeletonJoints,img,1);
         imwrite(img, fullfile(fileLocation,sprintf('Picture%d.png', nImages)));
         title(sprintf('Number: %3.0f',nImages))
         nImages = nImages+1;  
%     else
%     imshow(img);
    end
    end
    stop(videoC);
    stop(videoDepth);
    imaqreset;
catch
    imaqreset;
end
%% Display Info
nImages = size(ls(fullfile(fileLocation,'*.png')),1);
disp('---------Training images!---------')
disp(['Name: ',ObjectFolderName])
disp(['Nubmer: ',num2str(nImages)])
disp(['Location: ',fullfile(pwd,fileLocation)])

【问题讨论】:

  • 请添加您想要获得的输出的示例图片

标签: matlab kinect


【解决方案1】:

改变这一行:

imwrite(img, fullfile(fileLocation,sprintf('Picture%d.png', nImages)));

这些:

frame = getframe;
imwrite(frame.cdata, fullfile(fileLocation,sprintf('Picture%d.png', nImages)));

注意:我假设您的 util_skeletonViewerthis one

【讨论】:

    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多