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 |
示例代码 |
在PIE SDK调用时的写法 新建OpenCVTestCommand命令类
using PIE.Framework;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
namespace OpenCVMapApplication
{
/// <summary>
/// PIESDK和Opencv结合命令
/// </summary>
class OpenCVTestCommand : DesktopCommand
{
/// <summary>
/// 构造函数
/// </summary>
public OpenCVTestCommand()
{
this.Caption = "OpenCVTestCommand";
this.Name = "OpenCVTestCommand";
}
/// <summary>
/// 单击事件
/// </summary>
public override void OnClick()
{
string exe_path = @"E:\Software\PIE示例教程\PIE示例数据\图片\OpencvTest.exe";// 执行调用exe路径
string[] the_args = { @"E:\Software\PIE示例教程\PIE示例数据\OpenCV文件\window7.png" };// exe执行的参数
bool result = StartProcess(exe_path, the_args);
if (result == false)
{
System.Windows.Forms.MessageBox.Show("执行失败!");
}
}
/// <summary>
/// 进程调用
/// </summary>
/// <param name="exePath">exe执行程序调用</param>
/// <param name="args">参数</param>
/// <returns></returns>
public bool StartProcess(string exePath, params string[] args)
{
string s = "";
foreach (string arg in args)
{
s = s + arg + " ";
}
s = s.Trim();
Process process = new Process();//创建进程对象
ProcessStartInfo startInfo = new ProcessStartInfo(exePath, s); // 括号里是(程序名,参数)
process.StartInfo = startInfo;
process.Start();
return true;
}
}
}
注意:
OpenCVTestCommand.cs主要是调用opencv生成结果文件OpencvTest.exe;
最后一步如何在PIE搭建的程序调用OpenCVTestCommand命令呢?
首先在PIE搭建的界面上创建一个按钮,点击按钮的Click事件为toolStripButton_LoadOpenCV_Click
/// <summary>
/// 调用OpenCV例子
/// </summary>
/// <param name="sender">事件触发器</param>
/// <param name="e">事件参数</param>
private void toolStripButton_LoadOpenCV_Click(object sender, EventArgs e)
{
ICommand command = new OpenCVTestCommand(); //调用命令
command.OnCreate(mapControlMain);
command.OnClick();
} |
2.4 示例截图