我试图从我的PTB实验中节省一部分屏幕,但是屏幕(“GetImage”,.)功能不能正常工作。这是我的代码:
screenNumber = 0;
% Open screen with grey background
[w, rect] = Screen('OpenWindow', screenNumber,...
background,[], [], [],[],6);
[xCenter, yCenter] = RectCenter(rect);
sideLength = randi([100 175], 1);
baseRect = [0, 0, sideLength, sideLength];
% Center the frame
centeredRect = CenterRectOnPoint(baseRect, xCenter, yCenter);
%dot position
dots.x = randi([ round(xCenter - (sideLength/2))+15 round(xCenter + (sideLength/2))-15], 1, numeral);
dots.y = randi([round(yCenter - (sideLength/2))+15 round(yCenter + (sideLength/2))-15], 1, numeral);
%skipping code to move dots.x into dot_info.position for brevity
Screen('DrawDots',w, dot_info.position, dot_info.size,...
dot_info.colour, [], 2); %dots are drawn to center of screen
Screen('Flip', w);
% Save dot cue
%im = Screen('GetImage', w);
im = Screen('GetImage', w, centeredRect);
imwrite(im, filename);问题是,应该有一个小的正方形图像,以centeredRect矩形为中心,其中包含我绘制的点。然而,我得到的只是一个正确大小的矩形没有点。如果我保存而不传递centeredRect参数(注释行),我将得到整个屏幕的保存图片,显示中间的点--因此我知道正在绘制这些点。GetImage调用和它对rect的使用一定有问题,因为它没有从屏幕的中心点保存,所以我只是得到背景信息。当我在显示器上运行这个程序时,它工作得很好,但在我的笔记本电脑上却没有。不幸的是,我现在无法使用我的显示器,所以我需要让这个在我的笔记本上工作。我已经检查了一个屏幕()呼叫,只有一个屏幕:屏幕0-我的笔记本电脑屏幕。
任何帮助都非常感谢。谢谢。
发布于 2022-02-18 10:33:24
解决了:我不知道为什么这样做,但我不得不将centeredRect中的元素乘以2,希望这能帮助到其他人。
https://stackoverflow.com/questions/71171555
复制相似问题