HSPCVで動画合成ソフトの一環
狼さん 2013/6/13(Thu) 22:37:34|NO.54883
こんにちは狼さんといいます。
今回はHSPCVで動画合成ソフトを作ろうと思いまず黒に近い色を255,255,255に変換
しようと考えました。それで以下のようなスクリプトができました。
#include "hspcv.as"
;;動画を1こまずつ切り分ける
counout=0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
repeat 64;;;;いつまでかを指定する
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
cvopenavi "test.avi",counout;;;動画のファイル名
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
cvgetavi
counout=counout+1
await 10
cvcloseavi
loop
;;;;;;;;;;;;;;;;;動画各フレームの黒の部分を認識純黒に変換;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
counout=0
*fotbake
;;;CVバッファの表示
cvsave "brake"+counout+".bmp",counout
test="1"
xt=0
yt=0
pget xt,yt;;1dotの点を取得
vaR = ginfo(16)
vaG = ginfo(17)
vaB = ginfo(18)
;;;;;黒に近い値か確認する
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;黒の定義範囲
if vaR>200:vachR=1
if vaG>200:vachG=1
if vaB>200:vachB=1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;すべてvachか確認
vachR=1 and vachG=1 and vachB=1:goto *brago
goto *fotbake
*brago
color 255,255,255
pset xt,yt
xty = ginfo(10)
yty = ginfo(11)
if yt=yty:goto *reset
if xt=xty:goto *yreset
xt=xt+1
goto *brago
*yreset
xt=0
yt=yt+1
この際cvsave "brake"+counout+".bmp",counoutのところでopenCVのエラーが発生します。
このエラーの原因と解決方法を教えていただけないでしょうか?
名無し 2013/6/14(Fri) 10:03:29|NO.54884
cvopenavi "test.avi",counout;;;動画のファイル名をループ内に書いているのが原因ではないでしょうか?
名無し 2013/6/14(Fri) 13:04:53|NO.54885
連投すみません。なんとなくですが、cvopenavi "test.avi",counoutの位置を直しても正常にフレームを取得できない気がしたので、
kanahironさんが投稿してくれた動画をフレーム別に取得するソースをコピペしておきます。
#include "hspcv.as"
#define scr_w 1280 //映像の横幅
#define scr_h 720 //映像の縦幅
#define frames 66 //映像のフレーム数
dialog "avi",16,""
ifn = refstr
screen 0,scr_w,scr_h
cvreset //する必要はないが一応リセット
cvbuffer 1,scr_w,scr_h //CVのバッファ1を作成
cvopenavi ifn,1 //aviの取得を開始 出力先はCVのバッファ1
repeat frames
cvgetavi //(呼び出された回数)枚目の画像を取得
;cvflip 0,1 //画像が障碍反転している時にひっくり返す
cvgetimg 1,0 //CVのバッファ1からHSPのスクリーン0にコピー
await 16 //62.5fps
loop
cvcloseavi
狼さん 2013/6/15(Sat) 17:42:59|NO.54916
名無しさんご返信ありがとうございます。
たしかにループから外すと通常の動作を行ってくれました。
名無しさんに感謝です。