MATLAB Answers

動画でカスケード分類器使用

1 view (last 30 days)
私は以下のようにして一枚絵からカスケード分類器を用いた認識を行いました。
detector = vision.CascadeObjectDetector('~~');
RGB = imread('~~');
bbox = step(detector,RGB);
detectedImg = insertObjectAnnotation(RGB,'rectangle',bbox,'mouse');
figure; imshow(detectedImg);
今度は動画で認識を行いたいのですがRGBの文をvision.VideoFileReader(~~~)に変えたら
エラー: vision.CascadeObjectDetector/validateInputsImpl (line 338)
2 番目の入力引数 は次のタイプのいずれかにする必要があります:
uint8, uint16, double, single, int16
指定されたタイプは vision.VideoFileReader でした。
エラー: mouserecognation2 (line 6)
bbox = step(detector,v);  」
というエラーが出てしまいました。 どう書き直すと良いでしょうか?
追記:vf= RGB();を追加してdetectedImg = insertObjectAnnotation(vf,'rectangle',bbox,'mouse');
とすると動画は出たのですが再生しません。

  0 Comments

Sign in to comment.

Accepted Answer

Shunichi Kusano
Shunichi Kusano on 3 Sep 2020
こんにちは。
VideoFileReaderは、ビデオを再生するわけではなく、ビデオの先頭から1フレームずつ読み込む仕様です。
詳しくは下記ページの使用法の部分を読んでいただけるとわかるかと思います。
vr = vision.VideoFileReader(ファイル名);
frame = vr(); % 先頭フレームを読み込む(以後、このコマンドを実行するたび次のフレームを読み込む)
imshow(frame); % 読んだフレームを表示
ですので、1フレームずつ読んで処理してを繰り返すのが基本的な使い方です。
while ~isDone(vr)
frame = vr();
%% 処理本体
% なにか書く
%%
end

  1 Comment

わとー
わとー on 6 Sep 2020
videoPlayer = vision.VideoPlayer;を追加して
figure; imshow(detectedImg);をvideoPlayer(detectedImg);に書き換えたところ動きました、有難うございます。

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!