C# 将位图转换为OpenCvSharp IplImage
不幸的是,我正在努力解决这个问题。我有一个与Emgu和OpenCvSharp混合的项目。听起来很奇怪,但也有原因 无论如何,我有一个EMGU.CV.Image,我想用它来填充OpenCvSharp IplImage 我假设这是可能的,但我不能把我的头围绕它 相关代码片段(C#):C# 将位图转换为OpenCvSharp IplImage,c#,opencv,image-processing,emgucv,opencvsharp,C#,Opencv,Image Processing,Emgucv,Opencvsharp,不幸的是,我正在努力解决这个问题。我有一个与Emgu和OpenCvSharp混合的项目。听起来很奇怪,但也有原因 无论如何,我有一个EMGU.CV.Image,我想用它来填充OpenCvSharp IplImage 我假设这是可能的,但我不能把我的头围绕它 相关代码片段(C#): FrameCapture=Cv.CreateFileCapture(@“C:\test\vid1.mp4”); var frm=cap.QueryFrame(); var frameBmp=frm.Bitmap; Ip
FrameCapture=Cv.CreateFileCapture(@“C:\test\vid1.mp4”);
var frm=cap.QueryFrame();
var frameBmp=frm.Bitmap;
IplImage curFrame= 和往常一样,答案总是简单的
对于遇到此问题的任何人,您可以执行以下操作:
var frm = cap.QueryFrame(); // this is an Emgu.CV.Image object
var frameBmp = frm.Bitmap; // this is the bitmap from that object
Frame = new IplImage(frameBmp.Width, frameBmp.Height, BitDepth.U8, 3); //creates the OpenCvSharp IplImage;
Frame.CopyFrom(frameBmp); // copies the bitmap data to the IplImage
你试过什么?这两个类的内存布局是什么?你能获取原始像素数据吗?谢谢ananthonline…我想这才是真正的问题所在。我不知道该试什么。原始像素数据可能是解决问题的方法。我正在查看OpenCvSharp.IplImage对象上可用的属性,我不确定如何复制该数据
var frm = cap.QueryFrame(); // this is an Emgu.CV.Image object
var frameBmp = frm.Bitmap; // this is the bitmap from that object
Frame = new IplImage(frameBmp.Width, frameBmp.Height, BitDepth.U8, 3); //creates the OpenCvSharp IplImage;
Frame.CopyFrom(frameBmp); // copies the bitmap data to the IplImage