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