Я пытаюсь сделать шоу камеры на самолете в Unity3D. Я использую код из документации AForge: http://www.aforgenet.com/framework/docs/html/f4d3c2ba-605c-f066-f969-68260ce5e141.htm за исключением того, что я вставляю веб-камеру через Unity вместо обычного AForges, где она хочет сделать фильтринфоколлекцию. Если я не ошибаюсь, это необходимо для того, чтобы Unity распознала веб-камеру.
Однако мой код не работает, веб-камера запускается (из-за моего webCam.Play()), но больше ничего не происходит. При отладке я понял, что программа не достигает моей функции video_NewFrame, где, как я полагаю, мне нужно каким-то образом инициализировать, когда я использую Unity?
Как правильно это настроить?
using UnityEngine;
using System.Collections;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using AForge.Video;
using AForge.Video.DirectShow;
using AForge.Imaging.Filters;
using AForge.Imaging;
using AForge;
public class LoadVideo : MonoBehaviour {
public VideoCaptureDevice videoSource;
WebCamTexture webCam;
void Start(){
webCam = new WebCamTexture();
webCam.Play();
}
// Update is called once per frame
object b;
public WebCamDevice wc;
public GameObject originalFeed;
void Update () {
videoSource = new VideoCaptureDevice(webCam.deviceName);
videoSource.NewFrame += new NewFrameEventHandler(video_NewFrame);
videoSource.Start();
originalFeed.GetComponent<Renderer>().material.mainTexture = originalFeedTexture;
}
public delegate void EventPrototype(System.EventArgs args);
Texture2D originalFeedTexture;
void video_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Debug.Log("you here mate");
Bitmap video = (Bitmap)eventArgs.Frame.Clone();
MemoryStream memoryStream = new MemoryStream();
video.Save(memoryStream, ImageFormat.Jpeg);
byte[] bitmapRecord = memoryStream.ToArray();
originalFeedTexture.LoadImage(bitmapRecord);
}
}
AForge
вы используете? - person Alessandro D'Andria   schedule 02.11.20162.2.5
и переходом на2.2.0
(в моем случае событие никогда не возникало). - person Alessandro D'Andria   schedule 02.11.2016