HTML5で動画を再生してデータをOpenCVで加工することを考えています。
そこでまずHTML5の動画をjavascriptでCOPYしようと考えました。
それはあっさり出来て
lang
1document.addEventListener('DOMContentLoaded', function(){ 2 var video = document.getElementById('v'); 3 var canvas = document.getElementById('c'); 4 var context = canvas.getContext('2d'); 5 var back = document.createElement('canvas') 6 var backcontext = back.getContext('2d'); 7 8 var cw,ch; 9 10 video.addEventListener('play', function(){ 11 cw = video.clientWidth; 12 ch = video.clientHeight; 13 canvas.width = cw; 14 canvas.height = ch; 15 back.width = cw; 16 back.height = ch; 17 draw(video,context,backcontext,cw,ch); 18 },false); 19 20},false); 21function draw(v,c,bc,cw,ch) { 22 if(v.paused || v.ended) return false; 23 // 24 bc.drawImage(v,0,0,cw,ch); 25 // 26 //ちょっと加工してみるテスト 27 var idata = bc.getImageData(0,0,cw,ch); 28 var data = idata.data; 29 var w = idata.width; 30 var limit = data.length 31 // 32 for(var i = 0; i < limit; i++) { 33 if( i%4 == 3 ) continue; 34 data[i] = 127 + 2*data[i] - data[i + 4] - data[i + w*4]; 35 } 36 // 37 c.putImageData(idata,0,0); 38 // 39 setTimeout(draw,0,v,c,bc,cw,ch); 40} 41
lang
1<!DOCTYPE html> 2<title>Video/Canvas Demo 4</title> 3<script type="text/javascript" src="core.js"></script> 4 5 6 7<video id=v controls loop width=300> 8 <source src=sample.mp4 type=video/mp4> 9</video> 10<canvas id=c></canvas> 11 12<style> 13#c { 14 position: absolute; 15 top: 50%; 16 left: 50%; 17 margin: -180px 0 0 20px; 18} 19 20#v { 21 position: absolute; 22 top: 50%; 23 left: 50%; 24 margin: -180px 0 0 -500px; 25} 26</style> 27
こんな感じですが
この変換処理をOpenCVに変えたいので、EmscriptenのC言語コードにこのJSを変えたいのです。
そこでまずCANVAS C,VにC言語から区別してアクセスする方法が分かりません。
あるいは
var idata = bc.getImageData(0,0,cw,ch);
の戻り値だけでもC言語におくれればと考えております。
どうにかなりませんか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。