C#调用OpenCV实现的dll,如何实现数据类型转换和传入图像

沧海1梦 2017-03-29 05:04:30
如题,利用OpenCV实现几个函数,现在想在C#(WPF)下来进行调用:
想问下,1:如何进行数据类型的转换
比如下面的函数
void ColorToGray2(IplImage *pIn, IplImage *pOut, int width, int height, int DibWidth, short channels)
{
//IplImage* src = cvLoadImage(pIn);
//IplImage* dst = cvCreateImage(cvSize(src->width,src->height),8,3);
cvCvtColor(pIn,pOut,CV_RGB2GRAY);
width=pIn->width;
height=pIn->height;
DibWidth=pIn->widthStep;
channels=pIn->nChannels;
}

C#中的接口形式:
C#:void ResizeImage(byte[] pIn, byte[] pOut, int width, int height, int DibWidth, short nChannel, double fScale)

自己也查了一些资料,有的说可以byte[]->uchar *->IplImage,希望大家能帮忙解答下,到底如何转换,有小例子就更好了!

2、利用C#读入的图像如何传入到DLL中
因为最后的界面用WPF来设计,如何将Image传入到dll中?
...全文
635 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
得鹿梦鱼、 2019-03-12
  • 打赏
  • 举报
回复

[DllImport(@"ConApp.dll", EntryPoint = "show_mat", CallingConvention = CallingConvention.Cdecl)]
public static extern void show_mat(IntPtr img);
Mat SCr = new Mat(@"C:\Users\admin\Desktop\F548431971010910.jpg", Emgu.CV.CvEnum.LoadImageType.AnyColor);
Image<Bgr, byte> img = SCr.ToImage<Bgr, byte>();
AllClass.show_mat(img.Ptr);



__declspec(dllexport) void __stdcall show_mat(IplImage* src){
Mat M(src, true);
imshow("传入的参数", M);}
沧海1梦 2017-03-30
  • 打赏
  • 举报
回复
引用 2 楼 qq_21400315 的回复:
可以尝试将IplImage用c#类封装起来
比如呢,找了下,都是转换的,还没实现
Mr_Zhouzl 2017-03-30
  • 打赏
  • 举报
回复
可以尝试将IplImage用c#类封装起来
xuggzu 2017-03-29
  • 打赏
  • 举报
回复
咋不用emgucv?

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧