1
EmguCV 이미지 오류로 Kinect의 깊이 이미지를 변환하고,이 같은 깊이 스트림에서 EmguCV 이미지를 만들 때 ArgumentException이가 발생했습니다 :난 그냥 키 넥트 이미지 처리에 EmguCV을 사용하기 시작
private void DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e)
{
DepthImageFrame df = e.OpenDepthImageFrame();
if (df != null)
{
short[] data = new short[df.PixelDataLength];
df.CopyPixelDataTo(data);
Bitmap b = data.ToBitMap(df.Width, df.Height, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);
Image<Gray, short> im = new Image<Gray, short>(b); //run-time exception here
ToBitmap 확장 방법이 완전히 복사 키 넥트 SDK 튜토리얼 예에서 :
public static Bitmap ToBitmap(this short[] data, int width, int height, System.Drawing.Imaging.PixelFormat format)
{
var bitmap = new Bitmap(width, height, format);
var bitmapData = bitmap.LockBits(
new System.Drawing.Rectangle(0, 0, bitmap.Width,
bitmap.Height),
ImageLockMode.WriteOnly,
bitmap.PixelFormat);
Marshal.Copy(data, 0, bitmapData.Scan0, data.Length);
bitmap.UnlockBits(bitmapData);
return bitmap;
}
나는 b
가 null이 아닌 유효한 값을 가지고 있음을 확인. 나는 왜이 예외가 발생했는지, 어떤 이미지 형식의 문제인지 궁금하다.
는 이미 b'가 무효 인'발견하고 내가 RGB565하는 비트 맵의 형식을 변경할 때 그것은''와 함께 일했다. 하지만 16 비트 정밀도를 유지해야한다면 어떻게해야합니까? 16 비트 그래픽 카드가 없기 때문에 '비트 맵'이 실제로 16 비트 그레이 스케일을 지원하지 않는다고 들었습니다. 사실입니까? 이제 매체 형식으로''을 사용하고 데이터를'short []'에 다시 복사 한 다음'short []'를'BitmapSource'로 직접 변환합니다.이 경우 작동하는지 테스트 해 보겠습니다. 모두에게 감사합니다. –
Cherry