有效的GOCsharpHelper1.0(源代码开放)

简介: csharp编写界面,调用基于opencv的图像处理类库,是解决一类问题的优良方法。经过不懈研究,有最新进展:一、目前情况和优点       位置在11.通过clr           架在clr.

csharp编写界面,调用基于opencv的图像处理类库,是解决一类问题的优良方法。经过不懈研究,有最新进展:

一、目前情况和优点
       位置在11.通过clr
    
       架在clr.dll中
 
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
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




目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com
目录
相关文章
|
6月前
|
C++
红警源代码居然开源了....
红警源代码居然开源了....
|
13天前
|
存储 安全 关系型数据库
Blossom:开源私有部署的markdown笔记软件
Blossom 是一款功能强大的开源笔记软件,支持私有部署,可将笔记、图片、个人计划等数据保存在自己的服务器中,并实现实时同步。它还具备动态博客功能,方便记录和分享内容。Blossom 支持多种设备,提供完善的文件管理、快速迁移和丰富的附加功能,是个人知识管理和博客展示的理想选择。
49 7
Blossom:开源私有部署的markdown笔记软件
|
6月前
|
达摩院 Linux Docker
MindOpt APL 最新版本功能介绍,并且开放下载使用了!
MindOpt APL (MAPL) 是由阿里巴巴达摩院研发的国产建模语言,专长于电力SCUC等问题,提供向量化建模支持,可与Mindopt Studio平台集成。最新版2.4增加了向量化建模、Linux环境下通过pip安装支持以及改进了打印显示和错误提示。MAPL的向量化建模提高了效率,适合大规模问题。用户可通过云平台Docker打包或pip安装使用,支持多种求解器,包括MindOpt和开源求解器。
|
JavaScript 前端开发 Cloud Native
云his源码 多院区集团化的全院HIS系统源代码
系统利用云计算平台的技术优势,建立统一的云HIS、云病历、云LIS,有效实现实现协同门诊、住院、药房药库管理、双向转诊转检、远程会诊诊断及医疗数据共享与交换,解决数据重复采集及信息孤岛等问题,为实现区域协同医疗卫生信息化平台奠定了基础。 系统技术特点:采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发,适用于二级医院、基层医疗机构,可作为区域HIS使用,经扩展后能够应用于医联体/医共体。 云病历:完全满足和符合国家电子病历评级标准。三级质控,病历留痕,续打,批注
118 1
|
XML JSON 前端开发
开源的YAPI外还有哪些免费的接口工具?
API 管理这个话题近些年听到的频次越来越多,这本质上是个 web 领域的发展有关,也和开发协作方式有关--前后端分离代替了全栈工程师 hold all 的局面,强调的更多的是 API 复用、分工和协作细化。 API 管理的重要性不言而喻,每家公司随着业务的发展,多多少少都会涉及到;从开源社区的产品到国内各类商业化产品,可以看到大家对于 API 管理是越来越重视的。
|
存储 运维 小程序
开放下载!《15分钟打造你自己的小程序》(内附详细代码)
零基础开发你自己的支付宝小程序,教程在手不迷路,从入门到精通,还有详细代码在里面哦~
41960 0
开放下载!《15分钟打造你自己的小程序》(内附详细代码)
|
XML 缓存 程序员
B 站建立开源工作组:ijkplayer 等多个项目开源
SegmentFault 兄弟 + 基友单位弹幕视频网 Bilibili(B 站)近日在 GitHub 网站上建立了开源工作组(BOSTF)(此处 1024 赞),用以分享与维护自己的开源项目,其中包括 DanmakuFlameMaster(燃烧吧!烈焰弹幕使)与 ijkplayer。前者是免费提供 Android 平台下应用弹幕集成的解决方案,而后者则提供 Android 和 iOS 双平台视频播放器的解决方案。
234 0
B 站建立开源工作组:ijkplayer 等多个项目开源
|
安全 Java 测试技术
一款很好用的国产静态源代码扫描工具-DMSCA
一款很好用的国产静态源代码扫描工具-DMSCA
下一篇
无影云桌面