|
楼主 |
发表于 2017-1-17 00:11:43
|
显示全部楼层
csharp编写界面,调用基于opencv的图像处理类库,小结
本帖最后由 jsxyheu2014 于 2017-1-17 00:16 编辑
原文地址:http://www.cnblogs.com/jsxyhelu/p/6291454.html
一、目前情况和优点
位置在11.通过clr
架在clr.dll中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| - String^ Class1::Method(cli::array<unsigned char="">^ pCBuf1)
- {
- pin_ptr<system::byte> p1 = &pCBuf1[0];
- unsigned char* pby1 = p1;
- cv::Mat img_data1(pCBuf1->Length,1,CV_8U,pby1);
- cv::Mat img_object = cv::imdecode(img_data1,IMREAD_UNCHANGED);
- //////////////////////////////////处理过
- cvtColor(img_object,img_object,40);
- ////////////////////////////////////////////////////////////////////
- if (!img_object.data)
- return nullptr;
- //获得目录,保存文件
- cv::imwrite("c:/strDst.jpg",img_object);
- return "c:/strDst.jpg";
- }
复制代码
|
csharp这边,首先,有wrapper
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| - class GOCsharpHelper
- {
- Class1 client = new Class1();
- string strResult = null;
- //输入参数是string或bitmap
- public Bitmap ImageProcess(string ImagePath){
- Image ImageTemp = Bitmap.FromFile(ImagePath);
- return ImageProcess(ImageTemp);
- }
- //输出结果是bitmap
- public Bitmap ImageProcess(Image image)
- {
- MemoryStream ms = new MemoryStream();
- image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
- byte[] bytes = ms.GetBuffer();
- strResult = client.Method(bytes);
- Image ImageResult = Bitmap.FromFile(strResult);
- return (Bitmap)ImageResult;
- }
- public void Clear()
- {
-
- if(File.Exists(strResult))
- File.Delete(strResult);
- }
- }
复制代码
|
构然后有细节
- private void button2_Click(object sender, EventArgs e)
- {
- if (pictureBox1.Image != null)
- pictureBox1.Image.Dispose();
- Image image = gocsharphelper.ImageProcess(" E:/sandbox/logo.jpg");
- pictureBox1.Image = image;
-
- }
复制代码
通过复杂的方法,将串读入进来,然后转换为mat.这个过程是在内存中进行的,而且效果良好。但是imdecode采用了file I/O的方法,所以和直接写入磁盘是效果一样的。
此外,为opencv生成clr的dll,csharp中直接引用。
优点:
1、clr的优点,方便引用和调试;
2、会生成过程文件,但是能够自动删除。
3、效率还是有保障的。
二、存在问题
主要问题还是发展的问题,新的模型,少有人运作,能否用于实际?框架是否合理?
三、发展计划
算法衍生:我将现有代码运用于GOImageReasearch中,取得一些效果。
文中提及的代码实现
http://files.cnblogs.com/files/jsxyhelu/ClassLibrary1.zip
http://files.cnblogs.com/files/jsxyhelu/GOImageResearch.zip
|
|