问题描述
- 新人拼凑的码,求解为什么D\点云数据.txt中没有写入数据!!
-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Kinect;
using System.IO;
using System.Windows.Forms;
namespace GetPointCloudFromKinectV2
{
class Program
{//************************ 初始化相关对象 ********************************* public static KinectSensor sensor0 = null; static DepthFrameSource depthFrameSource0 = null; static DepthFrameReader depthFrameReader0 = null; static DepthFrame depthFrame = null; static ushort[] frameData_Shoot = new ushort[217088]; static CoordinateMapper coordinateMapper0 = null; static int depthFrameWidth = 512; static int depthFrameHeight = 424; static CameraSpacePoint[] OriginalPointCloud0 = new CameraSpacePoint[depthFrameWidth * depthFrameHeight]; static void Main(string[] args) { sensor0 = KinectSensor.GetDefault(); sensor0.Open(); //打开传感器 depthFrameSource0 = sensor0.DepthFrameSource;//初始化depthFrameSource0 coordinateMapper0 = sensor0.CoordinateMapper;//初始化coordinateMapper0 depthFrameReader0 = sensor0.DepthFrameSource.OpenReader();//打开深度数据流 DepthFrame depthFrame = null; depthFrame = depthFrameReader0.AcquireLatestFrame(); if (depthFrame != null) { depthFrame.CopyFrameDataToArray(frameData_Shoot); coordinateMapper0.MapDepthFrameToCameraSpace(frameData_Shoot, OriginalPointCloud0); } } /// 将摄像机坐标系下的点云写入到文件 static void WritePointCloud(CameraSpacePoint[] cameraSpacePoints, string FilePath = "D\点云数据.txt") { //确保路径存在 //如果不存在,则创建文件夹 if (!Directory.Exists(FilePath)) { Directory.CreateDirectory(FilePath); } FilePath = Path.Combine(FilePath ); try { float x, y, z; int frameWidth = depthFrameWidth;//深度帧的宽度 int frameHeight = depthFrameHeight;//深度帧的高度 for (int row = 0; row < frameHeight; row++) { for (int col = 0; col < frameWidth; col++) { x = cameraSpacePoints[row * frameWidth + col].X; y = cameraSpacePoints[row * frameWidth + col].Y; z = cameraSpacePoints[row * frameWidth + col].Z; string path="D\点云数据.txt";// StreamWriter sw = new StreamWriter(path, true); sw.WriteLine("{0} {1} {2}", x, y, z); sw.Close(); } } } catch (IOException ex) { System.Windows.Forms.MessageBox.Show("An IO exception has been thrown!n{0}", ex.ToString()); return; } } }
}
新人拼凑的码,求解为什么D点云数据.txt中没有写入数据!!
解决方案
路径搞错了吧。。你少了冒号会在你exe所在目录写入文件,就是bin目录里面,而不是d盘根目录下
string path = @"D:点云数据.txt";//放外面来,不需要每次打开文件写入
StreamWriter sw = new StreamWriter(path, true);
for (int row = 0; row < frameHeight; row++)
{
for (int col = 0; col < frameWidth; col++)
{
x = cameraSpacePoints[row * frameWidth + col].X;
y = cameraSpacePoints[row * frameWidth + col].Y;
z = cameraSpacePoints[row * frameWidth + col].Z;
sw.WriteLine("{0} {1} {2}", x, y, z);
}
}
sw.Close();
解决方案二:
虽然运行不了 不过还是放在VS里看了一下 貌似你的main方法里并没有调用WritePointCloud呀
解决方案三:
**D点云数据.txt **?
解决方案四:
注意你的路径写对没有,然后就是debug调试找到出错的地方进行修改
解决方案五:
路径名写错了 ,而且最好不要用中文名,会出意想不到的错误
时间: 2024-11-01 22:28:34