PIE SDK与OpenCV结合说明文档

1.功能简介

  OpenCV是基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

  本示例程序实现了PIESDK调用OpenCV函数功能(Canny函数),生成一幅图的边缘图,从而使PIE SDK可以与OpenCV紧密结合。

  注意:本文的OpenCV的例子OpencvTest.exe是基于OpenCV4.1的x64的环境编译的,不管是什么编译环境,只要是OpenCV生成的可运行的 exe用PIESDK都可以调用起来

2. 功能实现说明

2.1 实现思路及原理说明

第一步

利用PIESDK写一个Command类,本文是OpenCVTestCommand.cs

其类继承PIE.Framework.DesktopCommand;

第二步

重写OnClick()方法进行调用OpenCV例子生成的的exe

第三步

PIESDK命令调用(PIEApplication.xml配置或者ICommand调用),本文采用的是ICommand调用

2.2核心接口与方法

接口/类

方法

说明

PIE.SystemUI.ICommand

OnClick

单击事件

OnCreate

绑定地图对象

 

2.3 示例代码

项目路径

百度云盘地址下/PIE示例程序/14.SDK拓展开发/ 05PIESDK与OpenCV结合/ OpenCVMapApplication

数据路径

百度云盘地址下/PIE示例数据/OpenCV文件 /Window7.png OpencvTest.exe

视频路径

百度云盘地址下/PIE视频教程/14.SDK拓展开发/ 05PIESDK与OpenCV结合.avi

示例代码

 1 在PIE SDK调用时的写法 新建OpenCVTestCommand命令类
 2 using PIE.Framework;
 3 using System;
 4 using System.Collections.Generic;
 5 using System.Diagnostics;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Threading;
 9 
10 namespace OpenCVMapApplication
11 {
12     /// <summary>
13     /// PIESDK和Opencv结合命令
14     /// </summary>
15     class OpenCVTestCommand : DesktopCommand
16     {
17         /// <summary>
18         /// 构造函数
19         /// </summary>
20         public OpenCVTestCommand()
21         {
22             this.Caption = "OpenCVTestCommand";
23             this.Name = "OpenCVTestCommand";
24         }
25 
26         /// <summary>
27         /// 单击事件
28         /// </summary>
29         public override void OnClick()
30         {
31       string exe_path = @"E:\Software\PIE示例教程\PIE示例数据\图片\OpencvTest.exe";// 执行调用exe路径
32    string[] the_args = { @"E:\Software\PIE示例教程\PIE示例数据\OpenCV文件\window7.png" };// exe执行的参数
33             bool result = StartProcess(exe_path, the_args);
34             if (result == false)
35             {
36                 System.Windows.Forms.MessageBox.Show("执行失败!");
37             }
38         }
39        /// <summary>
40        /// 进程调用
41        /// </summary>
42         /// <param name="exePath">exe执行程序调用</param>
43        /// <param name="args">参数</param>
44        /// <returns></returns>
45         public bool StartProcess(string exePath, params string[] args)
46         {
47             string s = "";
48             foreach (string arg in args)
49             {
50                 s = s + arg + " ";
51             }
52             s = s.Trim();
53            Process process = new Process();//创建进程对象    
54             ProcessStartInfo startInfo = new ProcessStartInfo(exePath, s); // 括号里是(程序名,参数)
55             process.StartInfo = startInfo;
56             process.Start();
57             return true;
58         }
59     }
60 }
61 注意:
62 OpenCVTestCommand.cs主要是调用opencv生成结果文件OpencvTest.exe;
63 最后一步如何在PIE搭建的程序调用OpenCVTestCommand命令呢?
64 首先在PIE搭建的界面上创建一个按钮,点击按钮的Click事件为toolStripButton_LoadOpenCV_Click
65         /// <summary>
66         /// 调用OpenCV例子
67         /// </summary>
68         /// <param name="sender">事件触发器</param>
69         /// <param name="e">事件参数</param>
70         private void toolStripButton_LoadOpenCV_Click(object sender, EventArgs e)
71         {
72             ICommand command = new OpenCVTestCommand(); //调用命令
73             command.OnCreate(mapControlMain);
74             command.OnClick();
75         }
View Code

2.4  示例截图

 

 

转载于:https://www.cnblogs.com/PIESat/p/10694298.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js的栈堆与浅拷贝、深拷贝的理解

一&#xff1a;什么是堆栈&#xff1f; 我们都知道&#xff1a;在计算机领域中&#xff0c;堆栈是两种数据结构&#xff0c;它们只能在一端(称为栈顶(top))对数据项进行插入和删除。 堆&#xff1a;队列优先,先进先出&#xff1b;由操作系统自动分配释放 &#xff0c;存放函数的…

python面向对象基础语言进阶

在此感谢前辈们的指导&#xff1a;http://python.jobbole.com/80955/ https://www.cnblogs.com/wupeiqi/p/4766801.htmlhttps://www.cnblogs.com/paomaliuju/p/5122761.html https://www.cnblogs.com/goser/articles/7097728.html http://www.cnblogs.com/alex3714/articles/52…

ea 备份码是什么_EA的原始访问是什么,值得吗?

ea 备份码是什么EA’s Origin Access gives you access to more than 70 games, discounts, and new EA games before they’re released for a monthly (or yearly) subscription fee. But is it really worth it? EA的Origin Access可让您访问70多种游戏&#xff0c;打折游戏…

Https 加密原理分析

众所周知&#xff0c;HTTP 协议通过明文传输&#xff0c;是不安全的。于是&#xff0c;就在 HTTP 协议的基础上&#xff0c;进行了数据加密&#xff0c;也就诞生了 HTTPS 协议。注意&#xff0c;HTTPS 并不是一个新的协议&#xff0c;它只不过是在 HTTP 的基础上加了一层 TLS (…

JS框架_(JQuery.js)纯css3进度条动画

百度云盘  传送门  密码&#xff1a;wirc 进度条动画效果&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge,chrome1">…

如何在Android主屏幕上添加热点快捷方式

Portable Wi-Fi hotspots on your Android phone are great, because hotel Wi-Fi usually isn’t, but toggling that hotspot on and off is a pain. Here are several easy ways to add a hotspot widget to your home screen. 您的Android手机上的便携式Wi-Fi热点很棒&…

提高关键词排名的28个SEO技巧

28个让关键词排名明显改观的SEO技巧&#xff1a; 关键词位置、密度、处理 URL中出现关键词&#xff08;英文&#xff09; 网页标题中出现关键词&#xff08;1-3个&#xff09; 关键词标签中出现关键词&#xff08;1-3个&#xff09; 描述标签中出现关键词&#xff08;主关键…

SQLI DUMB SERIES-16

&#xff08;1&#xff09;无论怎么输入&#xff0c;都没有回显&#xff0c;但当输入 admin")#时&#xff0c;显示登录成功。若通过其他方法获取数据库的用户名&#xff0c;可通过这个方法登录成功。 &#xff08;2&#xff09;获取其他信息可用考虑时间延迟注入。方法同1…

如何在YouTube视频上禁用注释

YouTube has that betcha-can’t-watch-just-one appeal to it, which is why YouTube’s annoyances become so pronounced the more you use it. Many of these features, such as annotations can be permanently disabled, making for a more enjoyable viewing experience…

Linux目录配置及应放置的内容

Linux目录配置及应放置的内容 /bin&#xff1a;系统有很多放置执行文件的目录&#xff0c;但/bin比较特殊。因为/bin放置的是在用户维护模式下还能够被操作的命令。在/bin下面的命令可以被root与一般账号所使用&#xff0c;主要有cat,chmod,chown,date,mv,mkdir,cp,bash等常用命…

快速实现一个Http回调组件

2019独角兽企业重金招聘Python工程师标准>>> 快速实现一个Http回调组件 一、前情回顾 ​ 我们平时在使用一些库的时候&#xff0c;会遇到一些看起来很舒服的写法&#xff0c;用起来感觉很简单&#xff0c;而且写法也很优雅&#xff0c;比如OkHttp&#xff0c;或者是…

MyBatis缓存通俗易懂

1.1 mybatis缓存介绍 如下图&#xff0c;是mybatis一级缓存和二级缓存的区别图解&#xff1a; Mybatis一级缓存的作用域是同一个SqlSession&#xff0c;在同一个sqlSession中两次执行相同的sql语句&#xff0c;第一次执行完毕会将数据库中查询的数据写到缓存&#xff08;内…

DVbbs8.2入侵思路与总结

dvbbs8.2后比较变态&#xff0c;目前还没有特别好的方法&#xff0c;外面有人提到一种方法就是直接上传php文件或者其它服务器支持文件&#xff0c;这个也是一个思路&#xff0c;不过很多时候&#xff0c;单独的服务器不会支持这么多。dvbbs禁用了asp和asp.net的上传&#xff0…

Python基础教程:Python pass语句详解

2019独角兽企业重金招聘Python工程师标准>>> Python pass 语句 Python pass是空语句&#xff0c;是为了保持程序结构的完整性。 pass 不做任何事情&#xff0c;一般用做占位语句。 Python 语言 pass 语句语法格式如下&#xff1a; 实例&#xff1a; 学习从来不是一个…

Oracle数据库在Nokia

Nokia固然今非昔比&#xff0c;但在手机市场仍是未瘦死的骆驼&#xff0c;有关报道显示Nokia现役的数据库(包括Oracle、MySQL、MSSQL)达到2300套之多&#xff0c; DBA团队共有20多人&#xff0c;平均每人100多套库。 Grid Control在过去5年中是最主要的、也几乎是唯一的DBA管理…

css animation动画

css 动画&#xff1a; 动画是CSS3中具有颠覆性的特征之一&#xff0c;可通过设置多个节点来精确控制一个或一组动画&#xff0c;常用来实现复杂的动画效果. 必要元素&#xff1a;a、通过keyframes指定动画序列&#xff1b;自动补间动画&#xff0c;确定两个点&#xff0c;系统会…

甘特图看起来很生硬?教你使用智能颜色装饰你的甘特图!(二)

在上一篇文章中我们了解到颜色在甘特图中也有不同的作用。其中颜色在甘特图中扮演着三个角色&#xff0c;才能使甘特图对用户有意义。 颜色决定甘特图的外观。颜色还可以用来定义甘特图的语义。因此&#xff0c;它们帮助用户更快地理解甘特图所呈现的完整且常常复杂的现实。颜色…

网络串流_串流NFL足球的最便宜方式(无需电缆)

网络串流Football season is almost upon us. That means one thing: expensive cable or satellite TV packages. Okay, it also means beer commercials and overpriced stadium tickets and quarterbacks trying to sell you car insurance. But in terms of immediate cost…

【高清】网络安全思维导图

本文转自 是阿杰啊 51CTO博客&#xff0c;原文链接:http://blog.51cto.com/jschinamobile/1969018

生成函数初探

对给定序列\(\{a_{0,1,2,\cdots}\}\) 构造一个函数\(F(x)\sum_{i0,1,2,\cdots}a_if_i(x)\)&#xff0c;称\(F(x)\)为序列\(\{a_{0,1,2,\cdots}\}\)的生成函数。其中&#xff0c;序列\(\{f_{0,1,2,\cdots}(x)\}​\)只作为标志用&#xff0c;称为标志函数。 普通型生成函数(OGF) …