C# Emgu CV学习笔记二之图像读写的两种方法
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);
- private Image IntPtr2Image(IntPtr src)
- {
- MIplImage img = (MIplImage)Marshal.PtrToStructure(src, typeof(MIplImage));
- Bitmap disp = new Bitmap(img.width, img.height, PixelFormat.Format24bppRgb);
- BitmapData bmp = disp.LockBits(new Rectangle(0, 0, img.width, img.height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);
- long linebytes = (img.width * 24 + 31) / 32 * 4;
- unsafe
- {
- byte* pixel = (byte*)bmp.Scan0.ToPointer();
- if (img.nChannels == 3)
- {
- for (int i = 0; i < img.height; i++)
- {
- for (int j = 0, n = 0; j < img.width; j++, n++)
- {
- byte b = ((byte*)img.imageData + img.widthStep * i)[3 * j];
- byte g = ((byte*)img.imageData + img.widthStep * i)[3 * j + 1];
- byte r = ((byte*)img.imageData + img.widthStep * i)[3 * j + 2];
- *(pixel + linebytes * (i) + n) = b;
- n++;
- *(pixel + linebytes * (i) + n) = g;
- n++;
- *(pixel + linebytes * (i) + n) = r;
- }
- }
- }
- else if (img.nChannels == 1)
- {
- for (int i = 0; i < img.height; i++)
- {
- for (int j = 0, n = 0; j < img.width; j++, n++)
- {
- byte g = ((byte*)img.imageData + img.widthStep * i)[j];
- *(pixel + linebytes * (i) + n) = g;
- n++;
- *(pixel + linebytes * (i) + n) = g;
- n++;
- *(pixel + linebytes * (i) + n) = g;
- }
- }
- }
- else
- {
- return null;
- }
- }
- disp.UnlockBits(bmp);
- return (Image)disp;
- }
方法二
Image<Bgr, Byte> img = new Image<Bgr, byte>("001.jpg");
loadPictureBox.Image = img.ToBitmap();
C# Emgu CV学习笔记二之图像读写的两种方法的更多相关文章
- MySQL学习笔记(2) - 修改MySQL提示符的两种方法
学习于慕课网 http://www.imooc.com/video/1806 1.方法一: cmd中处于未登录状态时,输入 mysql -uroot -p自己的密码 --prompt 新的提示符 示例 ...
- TQ2440学习笔记——Linux上I2C驱动的两种实现方法(1)
作者:彭东林 邮箱:pengdonglin137@163.com 内核版本:Linux-3.14 u-boot版本:U-Boot 2015.04 硬件:TQ2440 (NorFlash:2M Na ...
- PMP知识点(二)——三点估算的两种方法对活动持续时间估算的影响和如何取舍
一.准备工作 活动持续时间的估算属于PMBOK中第六章项目时间管理中第五节6.6估算活动持续时间的内容. 三点估算是6.5和7.2(估算成本)中应用到的一种工具和技术.数据流向图参考如下: 其应用到的 ...
- java web学习总结(二十九) -------------------JavaBean的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- Emgu cv 学习笔记
http://www.cnblogs.com/CoverCat/p/5003363.html emgu中imagebox与picturebox imagebox 是emgu 设置好厚,新出现的控件 ...
- Android(java)学习笔记147:textView 添加超链接(两种实现方式,,区别于WebView)
1.方式1: LinearLayout layout = new LinearLayout(this); LinearLayout.LayoutParams params = new LinearLa ...
- PHP学习笔记,curl,file_get_content,include和fopen四种方法获取远程文件速度测试.
这几天在做抓取.发现用PHP的file_get_contents函数来获取远程文件的过程中总是出现失败,并且效率很低下.所以就做了个测试的demo来测试下PHP中各种方法获取文件的速度. 程序里面使用 ...
- react学习笔记1之声明组件的两种方式
//定义组件有两种方式,函数和类 function Welcome(props) { return <h1>Hello, {props.name}</h1>; } class ...
- angular学习笔记(三)-视图绑定数据的两种方式
绑定数据有两种方式: <!DOCTYPE html> <html ng-app> <head> <title>2.2显示文本</title> ...
随机推荐
- 解决xampp启动mysql失败
进入到注册表内 命令:regedit 进入到路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL 修改路径为:" ...
- 如何在HPUX的终端提示符前显示当前登录用户信息和所在目录
修改/etc/default/profile文件,在最后加上如下内容: case $LOGNAME in 'root') PS1="$LOGNAME@$(hostname): ...
- Linux内核学习笔记(6)-- 进程优先级详解(prio、static_prio、normal_prio、rt_priority)
Linux 中采用了两种不同的优先级范围,一种是 nice 值,一种是实时优先级.在上一篇粗略的说了一下 nice 值和实时优先级,仍有不少疑问,本文来详细说明一下进程优先级.linux 内核版本为 ...
- Cuteftp连接虚拟机Centos7
使用Centos7虚拟机时,想要从主机传一些文件到虚拟机,需要使用FTP传输,在主机上装上的CuteFTP的软件,对虚拟机进行配置. 1,首先,要保证虚拟机能够上网 一般装好虚拟机后,只要主机连了网, ...
- [题解] 洛谷 P3603 雪辉
模拟赛中遇到了这个题,当时我这个沙雕因为把一个\(y\)打成了\(x\)而爆零.回来重新写这道题,莫名其妙的拿了rank1... 我的解法与其他几位的题解有些不同我太蒻了.并没有选取所谓的关键点,而是 ...
- Paper Reading - Convolutional Sequence to Sequence Learning ( CoRR 2017 ) ★
Link of the Paper: https://arxiv.org/abs/1705.03122 Motivation: Compared to recurrent layers, convol ...
- Machine Learning方法总结
Kmeans——不断松弛(?我的理解)模拟,将点集分成几堆的算法(堆数需要自己定). 局部加权回归(LWR)——非参数学习算法,不用担心自变量幂次选择.(因此当二次欠拟合, 三次过拟合的时候不妨尝试这 ...
- dp算法之硬币找零问题
题目:硬币找零 题目介绍:现在有面值1.3.5元三种硬币无限个,问组成n元的硬币的最小数目? 分析:现在假设n=10,画出状态分布图: 硬币编号 硬币面值p 1 1 2 3 3 5 编号i/n总数j ...
- 使用PYTHON解析Wireshark的PCAP文件
PYTHON首先要安装scapy模块 PY3的安装scapy-python3,使用PIP安装就好了,注意,PY3无法使用pyinstaller打包文件,PY2正常 PY2的安装scapy,比较麻烦 f ...
- 20181120-10 Beta阶段第2周/共2周 Scrum立会报告+燃尽图 7
此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2415] 版本控制地址 [https://git.coding.n ...