http://blog.csdn.net/marvinhong/article/details/6800450

图像显示在控件loadPictureBox上

方法一

//读取图像001.jpg

IntPtr img = CvInvoke.cvLoadImage("001.jpg", Emgu.CV.CvEnum.LOAD_IMAGE_TYPE.CV_LOAD_IMAGE_COLOR);

//IntPtr转换为Image,详细见IntPtr2Image方法

loadPictureBox.Image = IntPtr2Image(img);

//显示图像窗口

CvInvoke.cvShowImage("view", img);

//窗口保留2000毫秒,即2秒
CvInvoke.cvWaitKey(2000);

//关闭窗口
CvInvoke.cvDestroyWindow("view");

//保存图像
CvInvoke.cvSaveImage("002.jpg", img);

//释放
CvInvoke.cvReleaseImage(ref img);

  1. private Image IntPtr2Image(IntPtr src)
  2. {
  3. MIplImage img = (MIplImage)Marshal.PtrToStructure(src, typeof(MIplImage));
  4. Bitmap disp = new Bitmap(img.width, img.height, PixelFormat.Format24bppRgb);
  5. BitmapData bmp = disp.LockBits(new Rectangle(0, 0, img.width, img.height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);
  6. long linebytes = (img.width * 24 + 31) / 32 * 4;
  7. unsafe
  8. {
  9. byte* pixel = (byte*)bmp.Scan0.ToPointer();
  10. if (img.nChannels == 3)
  11. {
  12. for (int i = 0; i < img.height; i++)
  13. {
  14. for (int j = 0, n = 0; j < img.width; j++, n++)
  15. {
  16. byte b = ((byte*)img.imageData + img.widthStep * i)[3 * j];
  17. byte g = ((byte*)img.imageData + img.widthStep * i)[3 * j + 1];
  18. byte r = ((byte*)img.imageData + img.widthStep * i)[3 * j + 2];
  19. *(pixel + linebytes * (i) + n) = b;
  20. n++;
  21. *(pixel + linebytes * (i) + n) = g;
  22. n++;
  23. *(pixel + linebytes * (i) + n) = r;
  24. }
  25. }
  26. }
  27. else if (img.nChannels == 1)
  28. {
  29. for (int i = 0; i < img.height; i++)
  30. {
  31. for (int j = 0, n = 0; j < img.width; j++, n++)
  32. {
  33. byte g = ((byte*)img.imageData + img.widthStep * i)[j];
  34. *(pixel + linebytes * (i) + n) = g;
  35. n++;
  36. *(pixel + linebytes * (i) + n) = g;
  37. n++;
  38. *(pixel + linebytes * (i) + n) = g;
  39. }
  40. }
  41. }
  42. else
  43. {
  44. return null;
  45. }
  46. }
  47. disp.UnlockBits(bmp);
  48. return (Image)disp;
  49. }

方法二

Image<Bgr, Byte> img = new Image<Bgr, byte>("001.jpg");

loadPictureBox.Image = img.ToBitmap();

最新文章

  1. Android Studio上面最好用的插件
  2. Reorder array to construct the minimum number
  3. python一个注意的地方
  4. ORACLE DATAGURARD 折腾记二
  5. 简洁 Abstract Factory模式(3.1)
  6. cglib源码分析(二):Class name 生成策略
  7. UVA - 11020 Efficient Solutions(Multiset)
  8. SLC和MLC闪存芯片的区别
  9. 关于C#静态构造函数的几点说明
  10. stm32 Bootloader设计(YModem协议) (转)
  11. 前端面试题总结:HTML5,JS,CSS3,兼容性。
  12. MySQL安装与使用过程中的相关问题
  13. MT【314】正切比值
  14. Python中pass的用法、作用
  15. PyCharm介绍与基础操作
  16. JDK源码分析之hashmap就这么简单理解
  17. HDU 1045 - Fire Net - [DFS][二分图最大匹配][匈牙利算法模板][最大流求二分图最大匹配]
  18. Cow Contest---poj3660
  19. Java零基础教程(一)环境搭建
  20. sort排序和uniq统计命令

热门文章

  1. Javac提示不是内部或外部命令
  2. Linux 安装Redis&lt;单机版&gt;(使用Mac远程访问)
  3. hdu - 6277,2018CCPC湖南全国邀请赛B题,找规律,贪心找最优.
  4. java之接口开发-初级篇-http和https
  5. hadoop之mapper类妙用
  6. hadoop的safemode 安全模式
  7. ES6的新特性(10)——Class 的基本语法
  8. 遇到Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so问题的解决方法
  9. POJ 3258(二分求最大化最小值)
  10. eclipse建包的一些细节