[blog 项目实战派]csharp通过dll调用opencv函数,图片作为参数
 
       ​一直想做着方面的研究,但是因为这个方面的知识过于小众,也是由于自己找资料的能力比较弱,知道今天才找到了比较好的资料。一个是thinimage,一个是basework,里面都实现了这里的“csharp通过dll调用opencv函数,并且采用图片作为参数”。这里小结如下。
       关于如何“csharp通过dll调用opencv函数”,请参考前面博文,这里主要说如何“采用图片为参数”。
       在编写图像识别/增强/机器视觉等项目的时候,一般会将算法打包成dll文件给客户,如果界面是用mfc写的话,是很好实现这个功能的。但是也有一些时候,由于特殊的需求,或者为了更快地实现更为丰富的界面效果,选择csharp作为界面。这个时候就需要“图片作为参数”。
      本项目是一个实验项目,功能就是csharp下读入一个24位彩色图片,调用opencv进行ycbcr变换后,然后再csharp上面显示出来。
      因为在调用的过程中,传递的只是指针, 所以这个转换需要做两方面的工作。一个方面是 csharp这边的,具体来说就是需要创建bitmap的结构,并且在调用的过程中锁定内存;一个方面是在opencv和dll编写这边的,要能够读入内存区域,并且翻译成mat结构。然后在这个基础上面编写相关的处理程序。
       继续开源项目ThinyImage,这个过程的以实现。
       ThinyImage本身就是csharp调用c++编写的dll实现的图像处理软件,也实现了一些功能:
那么在现有的程序上面添加GO算法接口
csharp这边,进行内存锁定和函数调用操作
  , , m_bitmap.Width, m_bitmap.Height),
                                                            ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
                NativeMethods.DirectCopy(bitmapData.Scan0, bitmapData.Width, bitmapData.Height, bitmapData.Stride, m_bpp);
                m_bitmap.UnlockBits(bitmapData);
            }
            catch (System.Exception)
            {
            }
            EndImageProcess();
        }
相应添加程序接口,
;i;j]]];i;j];
            bmpData[TiGreen]];
            bmpData[TiRed]];
            bmpData += bpp;
        }
        bmpData += offset;
    }
}
}
完成相应的功能
 

csharp通过dll调用opencv函数,图片作为参数的更多相关文章

  1. opencv通过dll调用matlab函数,图片作为参数

    [blog 项目实战派]opencv通过dll调用matlab函数,图片作为参数                   前文介绍了如何“csharp通过dll调用opencv函数,图片作为参数”.而在实 ...

  2. matlab调用opencv函数的配置

    环境: VS2010 活动解决方案平台x64 WIN 8.1 Opencv 2.4.3 Matlab 2012a 1.  首先保证vs2010能正确调用opencv函数, 2.  Matlab中选择编 ...

  3. [转] matlab调用opencv函数的配置

    原文地址百度账户 aleasa123 方式1 1.  首先保证vs2010能正确调用opencv函数, 2.  Matlab中选择编译器,操作如下: 打开matlab2012,输入mex –setup ...

  4. VC与JavaScript交互(二) --- 调用JS函数

    这一章,我们来动手实践VC调用JS函数. 我们动手写一个HTML,其中包含这样一段JS代码: //[html] <script type="text/javascript"& ...

  5. C++ dll调用-动态(显式)

    C++ dll调用-动态(显式) 废话不说上代码, dll 头文件 j_test.h #pragma once extern "C"_declspec(dllexport) voi ...

  6. Android 调用图库选择图片实现和参数详解

    //选择图片,调用图库        bt4.setOnClickListener(new OnClickListener() { @Override            public void o ...

  7. electron/nodejs实现调用golang函数

    https://www.jianshu.com/p/a3be0d206d4c 思路 golang 支持编译成c shared library, 也就是系统中常见的.so(windows下是dll)后缀 ...

  8. VC 在调用main函数之前的操作

    title: VC 在调用main函数之前的操作 tags: [VC++, 反汇编, C++实现原理] date: 2018-09-16 10:36:23 categories: VC++反汇编分析 ...

  9. Python 学习 第八篇:函数2(参数、lamdba和函数属性)

    函数的参数是参数暴露给外部的接口,向函数传递参数,可以控制函数的流程,函数可以0个.1个或多个参数:在Python中向函数传参,使用的是赋值方式. 一,传递参数 参数是通过赋值来传递的,传递参数的特点 ...

随机推荐

  1. IDEA中 @override报错的处理步骤

    今天用IDEA导入一个java工程时,JDK1.8版本,碰上一个问题,代码中所有@override处标红,并提示:@override不支持对接口的实现. 网上百度了一下发现, 原因是引用JDK5版本中 ...

  2. Effective C++ 6.继承与面向对象设计

    //条款32:确定你的public继承塑模出is-a关系 // 1.public继承意味着is-a的关系,适用在基类上的方法都能用于派生类上. //条款33:避免遮掩继承而来的名称 // 1.在pub ...

  3. 【Origin】晨起忆梦

    昨夜有梦又还乡, 忆起少年儿郎样: 田畔有花不忍折, 岁岁年年观花放. -作于二零一五年八月四日

  4. POJ 3243 Clever Y(离散对数-拓展小步大步算法)

    Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, ...

  5. 在C#中使用LOG4NET(winform程序

    http://www.csharpwin.com/csharpspace/678.shtml 1.下载log4net (Google log4net) 2.unzip log4net 3.运行VS,新 ...

  6. angular 倒计时

    $scope.countdown = ; var myTime = setInterval(function() { $scope.countdown--; $scope.$digest(); // ...

  7. 夺命雷公狗---在js里阻止a标签的跳转和form表单的跳转

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  8. RMB转换人民币大小金额

    MXS&Vincene  ─╄OvЁ  &0000015 ─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好 ...

  9. YUI3 CSS

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  10. Install DBD::mysql for Perl in XAMPP in Mac , solving errors

    我不知道 why,在 Mac 安装 DBI::mysql 总会报错 我为了给 cgi-bin 添加 mysql-perl 数据库支持,也是够麻烦的 make sure that mysql and m ...