読み取った動画を1フ​レーム分表示させると​、トリミングされて引​き伸ばされてしまいま​す。

下記コードを実行すると添付のファイルのように、画像がトリミングされた上に引き伸ばされてしまいます。 別の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)

답변 (1개)

Tohru Kikawada
Tohru Kikawada 2018년 5월 22일

1 개 추천

image(s(1).cdata) imshow(s(1).cdata) としてお試しください。アスペクト比が保持されると思います。

댓글 수: 7

denpika
denpika 2018년 5월 22일
ご回答ありがとうございます、しかし解決しませんでした。ほかのMatlabでは添付ファイルのように表示されますが、
ご回答いただいた手法ですと下記図になりました。
ver.違いなど関係するのでしょうか?
Tohru Kikawada
Tohru Kikawada 2018년 5월 23일
なるほど特定のマシンでのみ起きている問題なのですね。
VideoReader は通常Windowsの標準ビデオコーデックを利用しますが、サードパーティのビデオコーデックなどがインストールされていますと、そちらが利用されて思わぬ結果になる場合があります。もしコーデックがアンインストールできそうでしたらお試しください。 サポートされているビデオ ファイル形式 も参考になるかもしれません。
denpika
denpika 2018년 6월 5일
ビデオコーデックをアンインストールしても解消しなかったので、wiondowsをリカバリしたのですがそれでも症状は改善しませんでした。警告が表示されたのですが、関係あるでしょうか?
警告: ソフトウェアの OpenGL への切り替えにより、MATLAB で一部の高度なグラフィックス描画機能が無効になっています。詳細については、ここ をクリックしてください。
Tohru Kikawada
Tohru Kikawada 2018년 6월 12일
ソフトウェアOpenGLへの切り替えが起きていますが、今回の問題には直結しないように見えます。"ほかのMatlab"では正しく動作されているということですが、うまく動作しているMATLABと動作していないMATLABのバージョンが異なりますか。下記のコマンドで調べることができます。
>> ver
denpika
denpika 2018년 6월 13일
バージョンを調べました、次の通りです。
  • うまく動作したMATLAB バージョン: 9.1.0.441655 (R2016b)
  • 動作していないMATLAB バージョン: 9.2.0.538062 (R2017a)
denpika
denpika 2018년 6월 18일
VideoReaderのハードウェアアクセラレーションを無効化したら解決しました。
matlab.video.read.UseHardwareAcceleration('off')
Tohru Kikawada
Tohru Kikawada 2018년 7월 2일
情報ありがとうございます。ハードウェアアクセラレーションの問題だったのですね。
参考になりました。

댓글을 달려면 로그인하십시오.

질문:

2018년 5월 21일

댓글:

2018년 7월 2일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!