首页 > 其他 > 详细

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

时间:2017-01-17 00:40:44      阅读:225      评论:0      收藏:0      [点我收藏+]

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




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

原文:http://www.cnblogs.com/jsxyhelu/p/6291454.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!