我有不同的图像,我想裁剪它们并保持两者之间的不同。这是我到目前为止的代码。
video = VideoReader('frames.avi', 'Tag', 'my reader object');
frameFirst = read(video,1);
frameSecond = read(video, video.NumberOfFrames-1 );
imshowpair (frameSecond,frameFirst);
pause();
答案 0 :(得分:0)
嗯,没有更多细节,很难给你一个好的答案。我想我明白你要做的事情,这可能会让你朝着正确的方向前进。该代码按行和列迭代图像的每个像素(每个像素包含范围从0到1的1x3 RGB数据矢量)。如果1x3 RGB矢量的任何元素的差异超过某个阈值(在这种情况下,设置为0.1),我们将整个像素设为黑色(将其设置为[0 0 0])。否则,无论最后一帧是什么,我们都会做它。要过滤掉除了那些相同的像素以外的所有像素,请将阈值设置为0.它如下所示:
thresh = 0.1
for ii = 1:size(frameFirst, 1)
for jj = 1:size(frameFirst, 2)
pixDiff = frameFirst{ii, jj} - frameSecond{ii, jj}
if (pixDiff(1) > thresh || pixDiff(2) > thresh || pixDiff(3) > thresh)
outputFrame = frameSecond{ii, jj};
else
outputFrame = [0 0 0];
end
end
end
我希望这能满足您的需求。祝你好运!
编辑1:好的,我明白你现在正在寻找什么。您需要具有右下角和左上角的索引。如果您已经拥有这些,请执行以下操作:frameOut = frameIn(xStart:xStop,yStart,yStop。如果您需要找到这些点,那就更难了。让我知道,我会帮助您完成它进行。