opencv.js を使用して、色々なサイズの動画をVideoタグに置いて、Canvasに書き出して加工しようとしていますが、うまく動作しません。
以下、抜粋です。
html
1<video id="videoInput" src="hoge.mp4"></video> 2<canvas id="canvas"></canvas> 3
javascript
1let video = document.getElementById('videoInput'); 2let cap = new cv.VideoCapture(video); 3 4// 動的に画像を放り込むので、映像をロードした後に、width、heightを指定する 5video.onloadedmetadata = function () { 6 canvas.setAttribute("width", video.videoWidth); 7 canvas.setAttribute("height", video.videoHeight); 8 9 video.setAttribute("width", video.videoWidth); 10 video.setAttribute("height", video.videoHeight); 11 12 openCvReady(); 13 14} 15 16// opencvの処理 17function openCvReady() { 18 cv['onRuntimeInitialized']=()=>{ 19 映像読み込み処理 20 }; 21} 22
ただし、HTML側video・canvasタグに、width="270" height="360"、などと明示的に記載すれば、動きます。
直接HTMLにwidth、heightを記載するのと、上記のように映像ロードを待って動的にwidth、heightを指定するのと、何か違うのでしょうか?
Tensorflow.jsのPosenetなどは動的に指定して動作するので、OpenCV.js独特のような気もしています。
どなたかご存知の方がいらっしゃれば、お願いします。
あなたの回答
tips
プレビュー