読み取った動画を1フレーム分表示させると、トリミングされて引き伸ばされてしまいます。
Show older comments
下記コードを実行すると添付のファイルのように、画像がトリミングされた上に引き伸ばされてしまいます。 別のMatlabでは問題なく実行できたので設定が原因と思うのですが、どうしても原因がわからなかったので質問します。
vidObj = VideoReader('xylophone.mp4');
vidHeight = vidObj.Height;
vidWidth = vidObj.Width;
s = struct('cdata',zeros(vidHeight,vidWidth,3,'uint8'),'colormap',[]);
k = 1;
while hasFrame(vidObj)
s(k).cdata = readFrame(vidObj);
k = k+1;
end
image(s(1).cdata)

Answers (1)
Tohru Kikawada
on 22 May 2018
1 vote
image(s(1).cdata) を imshow(s(1).cdata) としてお試しください。アスペクト比が保持されると思います。
7 Comments
denpika
on 22 May 2018
Tohru Kikawada
on 23 May 2018
なるほど特定のマシンでのみ起きている問題なのですね。
VideoReader は通常Windowsの標準ビデオコーデックを利用しますが、サードパーティのビデオコーデックなどがインストールされていますと、そちらが利用されて思わぬ結果になる場合があります。もしコーデックがアンインストールできそうでしたらお試しください。 サポートされているビデオ ファイル形式 も参考になるかもしれません。
denpika
on 5 Jun 2018
Tohru Kikawada
on 12 Jun 2018
ソフトウェアOpenGLへの切り替えが起きていますが、今回の問題には直結しないように見えます。"ほかのMatlab"では正しく動作されているということですが、うまく動作しているMATLABと動作していないMATLABのバージョンが異なりますか。下記のコマンドで調べることができます。
>> ver
denpika
on 13 Jun 2018
denpika
on 18 Jun 2018
Tohru Kikawada
on 2 Jul 2018
情報ありがとうございます。ハードウェアアクセラレーションの問題だったのですね。
参考になりました。
Categories
Find more on オーディオとビデオ in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
