今朝(https://qiita.com/wirsind55/items/98328600991fcf6218ce)の続編である。
やりたいことはUnity上でCameraの動画キャプチャを取ってavi保存すること。
有料のもの(OpenCV for Unity)使えばいけんじゃないかとたかを括っていたが、いけない。。
コードは最小限にしてみて下記のとおり。
ScreenCapture.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using OpenCVForUnity;
using OpenCVForUnity.VideoioModule;
using OpenCVForUnity.VideoModule;
using OpenCVForUnity.CoreModule;
public class ScreenCapture : MonoBehaviour
{
public Camera _targetCamera;
private VideoWriter _videoWriter;
private int cnt = 0;
// Start is called before the first frame update
void Start()
{
_videoWriter = new VideoWriter(@"output.avi", VideoWriter.fourcc('D', 'I', 'V', 'X'), 30.0, new Size(448, 448), true);
}
// Update is called once per frame
void Update()
{
CaptchaScreen();
cnt.ToString() + ".png");
cnt++;
if(cnt >= 500)
_videoWriter.Dispose();
}
public void CaptchaScreen()
{
Mat srcMat = new Mat (new Size(448, 448), CvType.CV_8UC4);
_videoWriter.write(srcMat);
}
}
結果として、new VideoWriterでoutput.aviは作成されているけど、
その後のwriteが効いておらず作成されたaviファイルのファイルサイズは0のままで破損状態という扱いになる。
それまでに何か間違っているのでしょうか。。。
いかんせんUnity、OpenCVの記事はそこまで多くないし分からない。
誰か教えて下さい。
だいぶハマってしまったので、この方法は一旦あきらめ、別の手段に移ります(画像を大量生産して、その後でOpenCVで画像を動画にする)。
以上、しゅん。
⇒ コメント欄にて解決されました