c#Bitmap与c++ Mat 相互转换
更新时间:2023-11-06 04:52:01 阅读量: 教育文库 文档下载
C#Bitmap和C++ opencv Mat相互转换
C#调用C++编译成的dll,这个dll中包含Opencv个的Mat到c#的Bitmap转换,具体代码如下:
C++部分:
首先创建win32应用程序,选择类库模板
DLL_APIuchar * _stdcall run1(char* filename, int&width, int&height, int&step) {
IplImage* uu = cvLoadImage(filename);
IplImage* dst1 = cvCreateImage(cvSize(uu->width, uu->height), 8, 1); cvCvtColor(uu, dst1, CV_RGB2GRAY); Matss = cvarrToMat(uu);
uchar * data = new uchar[uu->width*uu->height * 3]; data = ss.data;
width = ss.size().width; height = ss.size().height; step = ss.step; return data; }
C#中调用这个dll
[DllImport(@\vAssemblies.dll\)]
publicstaticexternIntPtr run1(string a, outint width, outint height, outint step);
至此完成C++ Mat到Bitmap的转换
下面是Bitmap 到 Mat的转换 C# 部分
publicstaticBitmapInfoGetImagePixel(Bitmap Source) { byte[] result; int step;
intiWidth = Source.Width; intiHeight = Source.Height;
Rectanglerect = newRectangle(0, 0, iWidth, iHeight);
System.Drawing.Imaging.BitmapDatabmpData = Source.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, Source.PixelFormat); IntPtriPtr = bmpData.Scan0;
intiBytes = iWidth * iHeight * 3; //根据通道数进行设置 byte[] PixelValues = newbyte[iBytes];
//int time = Environment.TickCount;
System.Runtime.InteropServices.Marshal.Copy(iPtr, PixelValues, 0, iBytes); //time = Environment.TickCount - time; //Console.WriteLine(time.ToString() + \ Source.UnlockBits(bmpData); step = bmpData.Stride; result = PixelValues; // return result; // step = 0;
BitmapInfo bi = newBitmapInfo{ Result=result, Step=step }; return bi; } }
///
publicclassBitmapInfo {
publicbyte[] Result { get; set; } publicint Step { get; set; }
}
Step是扫描的步长,这个很重要,如果这个步长不是原来的值,就会造成图像偏移,从而造成失真。
C++部分
DLL_APIvoid_stdcallshow(uchar* data,intwidth,intheight,intstep) {
Matimage(height,width, CV_8UC3,data,step); //image.data = data; imshow(\,image);
//Mat(int rows, int cols, int type, void* data, size_t step = AUTO_STEP); }
C# 中调用方式
BitmapInfo bi = GetImagePixel(bitmap);
show(bi.Result,bitmap.Width,bitmap.Height,bi.Step);
至此完成他们的相互转换
正在阅读:
建筑学考研快题讲义05-26
思政课社会调查表格(艺术学院)05-30
Unit 4 知识清单12-24
人教版三年级语文上口语交际10-27
微格教学教案设计(优秀5篇)03-26
2013版人教版九年级物理第二十章第三节《电磁铁 电磁继电器》06-12
大学大三个人总结12-19
麻醉机的相关知识107-27
社会事业局年度工作总结及明年工作安排08-08
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- c++
- 相互
- 转换
- Bitmap
- Mat
- 关于研究纸桥结构与强度分析的立项研究申请书
- 振动单位换算表
- 2012秋知识产权法形成性考核册 作业2
- 房地产开发项目规费征收标准一览表
- 《现代企业管理》期末作业题
- 万历朝鲜战争对东亚政治局势影响
- LCR串联谐振电路
- 汽车美容试题A卷
- 基础知识必做题
- 水工钢筋混凝土计算题讲解
- 消化性溃疡习题
- 2016 年全国 BIM 应用技能考试试题( B卷)解析 - 图文
- 岩体力学实验
- 现代文阅读题答题思路归纳总结
- 细胞冻存和复苏
- 多元线性回归分析(Eviews论文)
- 化水部运行规程4×135机组
- 2020届高三数学(文科)一轮复习通用版4.7正弦定理和余弦定理(二)作业
- 氯化工艺作业安全技术实际操作考试标准
- PDA - TR28 中英 无菌原料药工艺模拟验证(2006年)