• 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:SoftwarePIE示例教程PIE示例数据图片OpencvTest.exe";// 执行调用exe路径
    32    string[] the_args = { @"E:SoftwarePIE示例教程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  示例截图

     

  • 相关阅读:
    路径操作OS模块和Path类(全)一篇够用!
    数据可视化:绘图库-Matplotlib
    matplotlib中文显示的问题
    Microsoft Visual C++ 14.0 is required问题解决
    python习题——随机整数生成类
    python——时间模块
    怎么获取10个线程的结果再返回
    集群服务器定时任务,只运行一个定时器的设计
    分布式事务
    分布式数据库---分库分表
  • 原文地址:https://www.cnblogs.com/PIESat/p/10694298.html
Copyright © 2020-2023  润新知