Opencv传递Mat类参数给Emgucv的Image类
2015-07-23 15:07
459 查看
这篇文章来说说怎么将Opencv的Mat通过dll链接库传递参数给Emgucv的Image类使用。
这里还是借助两个中间量来实现这个工程,即Opencv中的 IplImage类和Emgucv里的MIplImage类。
首先,将Mat类转换为IplImage指针
然后,将IplImage指针参数返回并转换成Emgucv中的Image对象
在这个过程中,要先将IplImage指针转换成MIplImage结构
然后在通过MIplImage结构这个桥梁,将IplImage指针转换成Emgucv中的Image对象
将Emgucv传递Image类参数给Opencv的Mat类的操作,请点击这里
这里还是借助两个中间量来实现这个工程,即Opencv中的 IplImage类和Emgucv里的MIplImage类。
首先,将Mat类转换为IplImage指针
void* MatToIplImage(Mat src) { IplImage dst = src; //将Mat类转换成IplImage return &dst; //返回IplImage指针 }
然后,将IplImage指针参数返回并转换成Emgucv中的Image对象
在这个过程中,要先将IplImage指针转换成MIplImage结构
/// <summary> /// 将IplImage指针转换成MIplImage结构 /// </summary> /// <param name="ptr">IplImage指针</param> /// <returns>返回MIplImage结构</returns> public static MIplImage IplImagePointerToMIplImage(IntPtr ptr) { return (MIplImage)Marshal.PtrToStructure(ptr, typeof(MIplImage)); }
然后在通过MIplImage结构这个桥梁,将IplImage指针转换成Emgucv中的Image对象
/// <summary> /// 将IplImage指针转换成Emgucv中的Image对象; /// 注意:这里需要您自己根据IplImage中的depth和nChannels来决定 /// </summary> /// <typeparam name="TColor">Color type of this image (either Gray, Bgr, Bgra, Hsv, Hls, Lab, Luv, Xyz or Ycc)</typeparam> /// <typeparam name="TDepth">Depth of this image (either Byte, SByte, Single, double, UInt16, Int16 or Int32)</typeparam> /// <param name="ptr">IplImage指针</param> /// <returns>返回Image对象</returns> public static Image<TColor, TDepth> IplImagePointerToEmgucvImage<TColor, TDepth>(IntPtr ptrPic) where TColor : struct, IColor where TDepth : new() { MIplImage mi = IplImagePointerToMIplImage(ptrPic); return new Image<TColor, TDepth>(mi.width, mi.height, mi.widthStep, mi.imageData); }
将Emgucv传递Image类参数给Opencv的Mat类的操作,请点击这里
相关文章推荐
- linux c 线程通信和同步
- linux删除大量文件----rm,rsync
- CentOS 7.1 (6.6)PXE网络自动化安装
- iptables限制MACIP绑定上网+Squid 透明代理How to
- NUTCH2.3 hadoop2.7.1 hbase1.0.1.1 solr5.2.1部署(二)
- 在RedHat Linux 9.0下配置DNS服务器Bind 9.2.6
- 【Linux_Fedora_应用系列】_5_如何安装XZ Utils 解压缩工具以及利用 xz工具来解压缩.xz文件
- Linux下VsFTP配置全方案
- 关于Centos6.6安装QQ问题
- linux 用户管理
- 修改linux的hostname
- linux-ubantu查看已安装的软件
- Attempted to lock an already-locked dir svn: Working copy...locked
- linux下自启动文件的设置
- centos7 安装docker
- Hadoop命令
- Linux 远程控制 SSH 配置
- Linux自启动设置详解
- linux在线安装jdk
- openlayer 设置popup窗口始终在上方显示