[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. 从零开始攻略PHP(5)——字符串操作与POSIX正则

    一.字符串操作 1.字符串的格式化 1.1 干掉空格 trim()函数可以除去字符串开始位置和结束位置的空格,并将结果字符串返回. ltrim()函数可以除去字符串开始位置的空格. rtrim()函数 ...

  2. redhat linux 安装mysql5.6.27

    1.yum安装mysql(root身份) yum install mysql-server mysql-devel mysql -y 如没有配置yum,请参见博客:http://www.cnblogs ...

  3. Latex技巧

    文件.tex 文件打开 error reading 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.com/jzhao-logs/27226136 ...

  4. ui方案设计

    最近在做一个ui,前端,为了引出创意,万事开头难,记录一下: 算是单页吧,一般都是左侧是导航,右边是内容,单页的话,要记录标签关闭,窗口区域. 操作的连惯性等.UI设计是个细活,需要深加研究,以后补充 ...

  5. centos每天一句命令

    shutdown -h now 立刻关机  后面可以加上关键的时间  -r 重启 reboot 重启  同时记载以下,仅仅给刚刚接触的新手来说的  按两次tab 键会自动命令 cd 到目录下 su r ...

  6. HashMap和HashTable区别

    HashMap和HashTable区别 HashMap--->允许控制/线程安全 HashTable-->线程不安全

  7. bzoj2743 [HEOI2012]采花

    做法是每个询问先算出询问区间中花的种类减去区间中只有一朵花的花的种类,这两个子问题都不算难,具体看代码吧.询问可以离线处理,用树状数组维护,复杂度O(nlogn). 不知道是想的复杂了还是打的太low ...

  8. 夺命雷公狗---微信开发62----所以memcache对access_token进行全局缓存优化

    公众号调用接口并不是无限制的,为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下, 每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到错误信息,造成调用失败. 我们也 ...

  9. java web sql注入测试(1)---概念概述

    在进行java web 测试时,经常会忽略的测试种类就是sql注入测试,这类缺陷造成的原因是开发技术在这方面欠缺的表现,虽然不常见,但一旦有这类缺陷,就很因此对运营的数据造成很多不必要的损失,所以,还 ...

  10. php里session的用法

    PHP中的session默认情况下是使用客户端的Cookie.当客户端的Cookie被禁用时,会自动通过Query_String来传递. Php处理会话的函数一共有11个,我们详细介绍一下将要用到几个 ...