OpenCV是基於BSD許可(開源)發行的跨平臺計算機視覺庫,能夠運行在Linux、Windows、Android和Mac OS操做系統上。它輕量級並且高效——由一系列 C 函數和少許 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的不少通用算法。算法
本示例程序實現了PIESDK調用OpenCV函數功能(Canny函數),生成一幅圖的邊緣圖,從而使PIE SDK能夠與OpenCV緊密結合。ide
注意:本文的OpenCV的例子OpencvTest.exe是基於OpenCV4.1的x64的環境編譯的,無論是什麼編譯環境,只要是OpenCV生成的可運行的 exe用PIESDK均可以調用起來函數
第一步this |
利用PIESDK寫一個Command類,本文是OpenCVTestCommand.csspa 其類繼承PIE.Framework.DesktopCommand;操作系統 |
第二步code |
重寫OnClick()方法進行調用OpenCV例子生成的的exeorm |
第三步視頻 |
PIESDK命令調用(PIEApplication.xml配置或者ICommand調用),本文采用的是ICommand調用xml |
接口/類 |
方法 |
說明 |
PIE.SystemUI.ICommand |
OnClick |
單擊事件 |
OnCreate |
綁定地圖對象 |
項目路徑 |
百度雲盤地址下/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 } |