如何将C++ IplImage 图像用C#读取  ?

将opencv 的C++程序做成 dll 动态链接库 用C#调用

当然这里需要安装emgucv  ,也可以自己实现这个类。

下面我把实现贴出来给大家参考:

1.制作dll

  1. #include "stdafx.h"
  2. #define DLL_API extern "C" _declspec(dllexport)
  3. #include <Windows.h>
  4. #include <stdio.h>
  5. #include <opencv2\opencv.hpp>
  6. #include <opencv\cxcore.h>
  7. #include <opencv2/legacy/compat.hpp>
  8. using namespace std;
  9. using namespace cv;
  10. DLL_API IplImage * _stdcall run1()
  11. {
  12. IplImage *src;
  13. src = cvLoadImage("d:/1.jpg");
  14. return src;
  15. }

2.C#中读取dll

需要开启 unsafe 模式

  1. [DllImport("dll_test_0410.dll")]
  2. unsafe
  3. public static extern MIplImage* run1();

调用函数并显示成图片:

需要将生成的dll 放入c#工程的bin里面对应的debug或者release

  1. unsafe
  2. MIplImage* a;
  3. unsafe
  4. private void button5_Click(object sender, EventArgs e)
  5. {
  6. IntPtr aa= new IntPtr();
  7. a= run1();
  8. int m= a->width;
  9. aa = a->imageData;
  10. int uu =a->height;
  11. int step = a->widthStep;
  12. Image<Bgr, byte> src = new Image<Bgr, byte>(m, uu, step, aa);//没有安装emgucv的话这个方法不能用,用intPtr转换
  13. pictureBox1.Image =  src.ToBitmap();
  14. ///////////////方法二,但是MIplImage还需要定义速度也慢,下面为单通道图像,多通道类似写一下就行//////
  15. byte []uuu = new byte[width*height];
  16. Marshal.Copy(aa,uuu,0,width*height);
  17. Bitmap dst = new Bitmap(width, height);
  18. Color color= new Color();
  19. for(int j=0;j<height;j++)
  20. {for(int i=0;i<width;i++)
  21. {
  22. byte m = uuu[j*width+i];
  23. color = Color.FromArgb(m, m, m);
  24. dst.SetPixel(i, j, color);
  25. }
  26. }
  27. pictureBox1.Image = dst;
  28. }
 

将C++ IplImage 图像用C#读取的更多相关文章

  1. opencv图像像素值读取

    说到图像像素,肯定要先认识一下图像中的坐标系长什么样. 1. 坐标体系中的零点坐标为图片的左上角,X轴为图像矩形的上面那条水平线:Y轴为图像矩形左边的那条垂直线.该坐标体系在诸如结构体Mat,Rect ...

  2. JPEG图像扩展信息读取和修改

    最近,项目需要使用jpg图像信息被写入(非水印),经过研究发现,Android已封装的读者jpg图片扩展信息api(ExifInterface). 通讯api住址:http://developer.a ...

  3. opencv入门系列教学(二)图像入门:读取、展示并保存视频

    一.从相机读取视频 通常情况下,我们必须用摄像机捕捉实时画面.让我们从摄像头捕捉一段视频(我使用的是我笔记本电脑内置的网络摄像头) ,将其转换成灰度视频并显示出来.        要捕获视频,我们需要 ...

  4. OpenCV中IplImage图像格式与BYTE图像数据的转换

    最近在将Karlsruhe Institute of Technology的Andreas Geiger发表在ACCV2010上的Efficent Large-Scale Stereo Matchin ...

  5. SimpleITK学习(二)图像读取

    通常我会用simpleitk来读取dicom文件,主要是为了将dicom文件转换为numpy矩阵,便于输入神经网络,读取dicom文件可分为两种情况,一.单独的dicom文件 二.一系列dicom文件 ...

  6. 图像读取Exif小知识,图像扶正,还原拍摄时的角度

    在做人脸识别的时候发现很多手机拍摄的图像在C#读取之后方向出现了错误,Bitmap中的宽度和实际的windows的文件属性内的参数相反,引起一阵测试和思考,后来百度出来可以用Exif来解决 githu ...

  7. Halcon一日一练:读取文件目录图像的三种方法

    第一种方法: 读了一个单一图像: read_image(Image,'fabrik') 这种方式可以快速的读取软件自身携带的库图像文件,系统设定了库图像映像文件的快速读取方式,我们也可以通过绝对地址的 ...

  8. matlab中imread 从图形文件读取图像

    来源:https://ww2.mathworks.cn/help/matlab/ref/imread.html?searchHighlight=imread&s_tid=doc_srchtit ...

  9. IplImage, CvMat, Mat 的关系和相互转换(转)

    (看到的一篇非常好的文章,讲opencv内部类之间的关系的.) opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重 ...

随机推荐

  1. Rolling in the Deep (Learning)

    Rolling in the Deep (Learning) Deep Learning has been getting a lot of press lately, and is one of t ...

  2. soj1166. Computer Transformat(dp + 大数相加)

    1166. Computer Transformat Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description A sequenc ...

  3. zedboard 初使用 -- 工具篇

    <一> 安装ISE和Vivada: <二> 安装USB转UART驱动 <三> 安装USB转JTAG驱动插件 http://blog.sina.com.cn/s/bl ...

  4. D. Makoto and a Blackboard(积性函数+DP)

    题目链接:http://codeforces.com/contest/1097/problem/D 题目大意:给你n和k,每一次可以选取n的因子代替n,然后问你k次操作之后,每个因子的期望. 具体思路 ...

  5. curator框架的使用以及实现分布式锁等应用与zkclient操作zookeeper,简化复杂原生API

    打开zookeeper集群 先体会一下原生API有多麻烦(可略过): //地址 static final String ADDR = "192.168.171.128:2181,192.16 ...

  6. 邮件伪造测试-Swaks

    1. 前言 在kali中自带一个邮件伪造工具Swaks,工具项目主页为 http://jetmore.org/john/code/swaks 2.基本用法: swaks --to --from --e ...

  7. linux调试工具glibc的演示分析

    偶然中发现,下面的两端代码表现不一样 void main(){ void* p1 = malloc(32);       free(p1); free(p1); // 这里会报double free ...

  8. Linux input子系统学习总结(三)----Input设备驱动

    Input 设备驱动 ---操作硬件获取硬件寄存器中设备输入的数据,并把数据交给核心层: 一 .设备驱动的注册步骤: 1.分配一个struct  input_dev :          struct ...

  9. C# 序列化高级用法

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  10. 【转载】ajaxFileUpload 报这错jQuery.handleError is not a function

    今天刚打个一个技术群,里面有人问标题上的问题,嘿,我恰好遇过,现在大家至少也在用jquery1.9以上的版本,ajaxfileupload的版本早就不更新了,大家可以下载看:地址这里,它例子里使用的J ...