创建一个C++制作的包含Opencv功能的dll,供C#程序使用

目的:朋友用C#编写了一个软件,先需要一个功能:获取某图片指定位置的颜色。

实现该目的的方法有很多,即为了朋友能够很便捷解决该问题,也为了有助于扩充自己技术广度,所以决定采用标题中的方法来完成。

没有C++编程经验,也没有制作C++版Opencv语法经验,也没有制作dll的经验,整个流程牵涉比较多的技术环节,每个环节需要一个一个测试通过,才能进行后续设计。

由于网上太多零散信息,没有很好的参考资料,大多只能靠自己实践测试,所以从开始,到跨机各种环境测试,整整花了1天半。

现在问题全部解决了,回头想想,流程太简单了!

开发环境:

Win7系统

VS2017

Opencv 3.4.0

主流程:

(1)搭建C++版Opencv开发环境,并测试需要定制的功能应该怎么写

(2)借助C++和Opencv定制特定功能的dll

(3)编写C#简单winform应用程序,测试dll

详细:

1.搭建C++版Opencv开发环境 (源自YouTube)

1.1 创建C++空项目

项目名称为OpenCVTest

1.2 下载Openc包

到官网,下载指定版本的opencv,解压后,就是几个文件夹。我存放的路径是:

1.3 配置刚才创建的C++项目属性

注意:上述平台我选的是X64。

1.4 将F:\dream\10\20181031\Extermal Libraries\OpenCV\x64\vc15\bin中两个.lib文件夹放到OpenCVTest工程中

1.5 在刚才的工程文件中新建一个main.cpp文件,并在里面编写测试代码。(注意运行时,要选X64)

运行结果:

至此,注意功能代码和环境测试通过。

2 创建dll (主要参考:https://blog.csdn.net/zhangzhe_0305/article/details/78399224)

2.1

未完待续

原文地址:https://www.cnblogs.com/Edison25/p/9890516.html

时间: 2024-11-13 06:41:24

创建一个C++制作的包含Opencv功能的dll,供C#程序使用的相关文章

OneExerciseOne创建一个类,它包含一个int域,一个char域,他们都没有初始化,验证Java执行了默认初始化

在学习<Thinking In java>时,遇到Chapter 2的Exercise 1,问题是这么说的"/**创建一个类,它包含一个int域,一个char域,他们都没有初始化,将他们的值打印出来,验证Java执行了默认初始化".刚拿到这道题目我是这么写的. 1. package Two; public class ExerciseOne {public static void main(String [] args){int a;char c;System.out.pr

oracle学习 五 使用存储过程创建一个重置密码为123456的功能(持续更新中)

首先写一个函数是MD5的方法 create FUNCTION GET_MD5 ( p_str in varchar2) RETURN varchar2 IS BEGIN RETURN Utl_Raw.Cast_To_Raw(DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => Upper(P_Str))); END; 然后在存储过程里面调用 create procedure proc_set_md5 as begin update T_USER_INFO se

使用 CodeIgniter 创建一个简单的 Web 站点

原文:使用 CodeIgniter 创建一个简单的 Web 站点 参考源自: http://www.ibm.com/developerworks/cn/web/wa-codeigniter/index.html 我的第一个 CodeIgniter 项目(除HelloWorld外),现整理记录下来. 相关环境: 系统:ubuntu-10.04.3 Apache:httpd-2.4.7 PHP:php-5.4.22 MySQL:mysql-5.6.16 CI:CodeIgniter-2.2.0 目标

CodeIgniter框架——创建一个简单的Web站点

目标 使用 CodeIgniter 创建一个简单的 Web 站点.该站点将有一个主页,显示一些宣传文本和一个表单,该表单将发布到数据库表中. 按照 CodeIgniter 的术语,可将这些需求转换为以下内容: 一个控制器,仅包含少数功能(可使用默认的 Welcome 控制器) 一个模型(以及一个数据库表),用于存储联系人信息 一个主视图,包含一些支持 NO1.创建数据库表和模型 从模型入手可帮助理解底层数据库表,之后再开始布设功能和 UI.如果对表将存储哪些内容认识不深,设计与表交互的表单将十分

创建一个成功的App前要考虑的5个要点

在智能机时代,相比浏览网页而言,人们一般更喜欢喜欢使用手机应用.这种趋势就导致了成千上万的APP在Google Play 和 Apple Store 平台的诞生.有一些企业想要通过创建APP去提升他们的业务,其他人比如兄弟连学编程的学员也想要通过创建APP去获得收益. 移动应用的热潮激发人们都想要去开发一个自己的APP.你是不是也是其中一员呢? 你是不是想要创建一个APP但是却又不知道如何开始呢?如果是,兄弟连的小编整理的这篇文章可以指导你创建一个APP的流程. 1. 计划阶段 开始构建应用程序

使用MicroService4Net 快速创建一个简单的微服务

“微服务架构(Microservice Architecture)”一词在过去几年里广泛的传播,它用于描述一种设计应用程序的特别方式,作为一套独立可部署的服务.目前,这种架构方式还没有准确的定义,但是在围绕业务能力的组织.自动部署(automated deployment).端智能(intelligence in the endpoints).语言和数据的分散控制,却有着某种共同的特征. “微服务(Microservices)”——只不过在满大街充斥的软件架构中的一新名词而已.尽管我们非常鄙视这

WordPress插件制作教程(一): 如何创建一个插件

上一篇还是按照之前的教程流程,写了一篇WordPress插件制作教程概述,从这一篇开始就为大家具体讲解WordPress插件制作的内容.这一篇主要说一下插件的创建方法. 相信大家都知道插件的安装文件在什么地方吧,没错就在WP-Content->plugins里面,我们所安装的插件都存放在了这个文件夹里面.当我们刚开始搭建好WordPress网站的时候,里面会默认提供两个插件,一个是Akismet(过滤垃圾评论插件)和一个hello插件(显示歌词的插件).我们可以打开hello.php这个文件,这

创建一个函数,实现库函数strstr的功能

★创建一个函数,实现库函数strstr的功能 #include<stdio.h> #include<stdlib.h> #include<assert.h> char *my_strstr(char *src,char *dst) { assert(dst); assert(src); char *p = src; char *q = dst; while ((*dst)&&(*src)) { if (*src == *dst)        //两指针

创建一个提供搜索功能的搜索类(可运行)

/* * 这段代码的主要功能是对于创建索引的后的文件, * 创建一个提供搜索功能的搜索类. * */ package ch2.lucenedemo.process; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Date; import java.util.Iterator; import jav