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  示例截图

 

 

posted @ 2019-04-12 10:05  PIESAT  阅读(706)  评论(0编辑  收藏  举报