尽管我已经看到很多与此非常相似的问题,但仍需要一些帮助,但是我仍然无法解决。因此,我从服务器端编写了一个程序,将帧字节数组(从Kinect RGB相机)转换为Base64 String格式,然后将String传递给客户端。在客户端,我很困惑如何在画布上显示图像?
因此,基本上我的部分代码是这样的:
private static byte[] colorPixels;
static private void InitilizeKinect()
{
var sensor = KinectSensor.KinectSensors.SingleOrDefault();
if (sensor != null)
{
sensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);
colorPixels = new byte[sensor.ColorStream.FramePixelDataLength];
sensor.ColorFrameReady += SensorColorFrameReady;
sensor.Start();
}
}
static void SensorColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
{
if (!_serverInitialized) return;
using (ColorImageFrame colorFrame = e.OpenColorImageFrame())
{
if (colorFrame != null)
{
colorFrame.CopyPixelDataTo(colorPixels);
String json = Convert.ToBase64String(colorPixels);
foreach (var socket in _clients)
{
socket.Send(json);
}
}
}
}
我将colorstream帧字节数组转换为Base64字符串,以便使用JSON将其传递给客户端。没有错误,我可以运行服务器,客户端也可以接收连接,但是画布什么也不显示。我不知道如何填充图像源。
这是我的JavaScript的一部分:
socket.onmessage = function (event) {
if (typeof event.data === "string") {
status.innerHTML = "Kinect RGB received.";
// Get the data in JSON format.
var jsonObject = JSON.parse(event.data);
var img = new Image();
img.onload = function () {
context.drawImage(img, 0, 0);
}
img.src = ??????
}
};
任何有关的答案将不胜感激。谢谢!:D
这应该工作:
socket.onmessage = function (event) {
if (typeof event.data === "string") {
status.innerHTML = "Kinect RGB received.";
// Get the data in JSON format.
var jsonObject = JSON.parse(event.data);
var img = new Image();
img.onload = function () {
context.drawImage(img, 0, 0);
}
img.src = "data:image/ png;base64," + jsonObject.REPLACETHIS;
// you have to replace 'REPLACETHIS' by the name of your base64 image data
}
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句