Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PIE SDK与OpenCV结合说明文档大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

1.功能简介   OpenCV是基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。   本示例程序实现了PIESDK调用OpenCV函数功能(CAnny函数

1.功能简介

  OpenCV是基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

  本示例程序实现了PIESDK调用OpenCV函数功能(CAnny函数),生成一幅图的边缘图,从而使PIE SDK可以与OpenCV紧密结合。

2. 功能实现说明

2.1 实现思路及原理说明

第一步

安装openCV

第二步

一个OpenCV的例子(本文以提取图像的边缘图为例)

第三步

利用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示例数据/图片 /Window7.png

视频路径

百度云盘地址下/PIE视频教程/14.SDK拓展开发/ 05PIESDK与OpenCV结合.avi

示例代码

PIE SDK与OpenCV结合说明文档

  1 Test.cpp
  2 #include<iostream>
  3 #include<opencv2\core.hpp>
  4 #include<opencv2\highgui.hpp>
  5 #include<opencv2\\imgproc.hpp>
  6 #include <opencv2\\imgcodecs.hpp>
  7 using namespace cv;
  8 using namespace std;
  9 
 10 @H_496_246@mat img,src_gray;
 11 Mat dst,detected_edges;//源图像,灰度
 12 int edgeThresh = 1;
 13 int lowThreshold;//用户移动轨迹栏输入的值(下限)
 14 int const max_lowThreshold = 100;//检测器的上限
 15 int ratio = 3;//在程序中设置为下限阈值的三倍(在CAnny的建议之后)
 16 int kernel_size = 3;//要在内部使用的Sobel内核的大小
 17 const char* window_name = "原图";
 18 const char* window_name1 = "提取边缘图";
 19 static void CAnnyThreshold(int,void*)
 20 {
 21     blur(src_gray,detected_edges,Size(3,3));//内核大小为3的过滤器模糊图像
 22     CAnny(detected_edges,lowThreshold,lowThreshold*::ratio,kernel_sizE);//源图像、检测器的输出(可以与输入相同)、、、
 23     dst = Scalar::all(0);//零填充dst图像(意味着图像是完全黑色的)
 24     img.copyTo(dst,detected_edges);//仅映射被识别为边缘的图像的区域(在黑色背景上)
 25     imshow(window_name1,dst);
 26 }
 27 
 28 int main(int argc,char** argv)
 29 {
 30     if (argc != 2)
 31     {
 32         cout << "参数为空!" << endl;
 33         return -1;
 34     }
 35     img = imread(argv[1],IMREAD_COLOR); // 读取Img
 36     if (img.empty())
 37     {
 38         return -1;
 39     }
 40     namedWindow(window_name,WINDOW_AUTOSIZE);//创建新窗口进行展示原图
 41     imshow(window_name,img);
 42 
 43     dst.create(img.size(),img.type());//创建一个相同类型和大小的img(为dst)的矩阵
 44     cvtColor(img,src_gray,COLOR_BGR2GRAY);//图像转换为灰度级
 45     namedWindow(window_name1,WINDOW_AUTOSIZE);//创建新窗口进行展示结果图
 46     createTrackbar("@H_869_340@min Threshold:",window_name1,&lowThreshold,max_lowThreshold,CAnnyThreshold);//创建一个跟踪栏,供用户输入CAnny检测器的下限
 47     CAnnyThreshold(0,0);
 48     waitKey(0);//等待 用户按任何键时退出
 49     return 0;
 50 }
 51 
 52 在PIE SDK调用时的写法
 53 using PIE.Framework;
 54 using System;
 55 using System.Collections.Generic;
 56 using System.Diagnostics;
 57 using System.Linq;
 58 using System.Text;
 59 using System.Threading;
 60 
 61 namespace OpenCVMapApplication
 62 {
 63     /// <sumMary>
 64     /// PIESDK和Opencv结合命令
 65     /// </sumMary>
 66     class OpenCVTESTCommand : DesktopCommand
 67     {
 68         /// <sumMary>
 69         /// 构造函数
 70         /// </sumMary>
 71         public OpenCVTESTCommand()
 72         {
 73             this.Caption = "OpenCVTESTCommand";
 74             this.Name = "OpenCVTESTCommand";
 75         }
 76 
 77         /// <sumMary>
 78         /// 单击事件
 79         /// </sumMary>
 80         public override void OnClick()
 81         {
 82             String exe_path = @"D:\code\C++\OpencvTest\x64\Debug\OpencvTest.exe";  // 执行调用exe路径
 83             String[] the_args = { @"D:\\PicData\\window7.png" };   // exe执行的参数
 84             bool result = StartProcess(exe_path,the_args);
 85             if (result == false)
 86             {
 87                 System.Windows.Forms.messageBox.Show("执行失败!");
 88             }
 89         }
 90        /// <sumMary>
 91        /// 进程调用
 92        /// </sumMary>
 93         /// <param name="exePath">exe执行程序调用</param>
 94        /// <param name="args">参数</param>
 95        /// <returns></returns>
 96         public bool StartProcess(String exePath,params String[] args)
 97         {
 98             String s = "";
 99             foreach (String arg in args)
100             {
101                 s = s + arg + " ";
102             }
103             s = s.Trim();
104            Process process = new Process();//创建进程对象    
105             ProcessStarTinfo starTinfo = new ProcessStarTinfo(exePath,s); // 括号里是(程序名,参数)
106             process.StarTinfo = starTinfo;
107             process.Start();
108             return true;
109         }
110     }
111 }
112 注意:
113 Test.cpp和OpenCVTESTCommand.cs的关系是后者调用前者的生成结果文件OpencvTest.exe;
114 最后一步如何在PIE搭建的程序调用OpenCVTESTCommand命令呢?
115 首先在PIE搭建的界面上创建创建一个按钮,点击按钮的Click事件为toolStripButton_LoadopenCV_Click
116         /// <sumMary>
117         /// 调用OpenCV例子
118         /// </sumMary>
119         /// <param name="sender">事件触发器</param>
120         /// <param name="e">事件参数</param>
121         private void toolStripButton_LoadopenCV_Click(object sender,EventArgs E)
122         {
123             ICommand command = new OpenCVTESTCommand(); //调用命令
124             command.onCreate(mapControlMain);
125             command.onClick();
126         }
View Code

2.4  示例截图

 

PIE SDK与OpenCV结合说明文档

@H_32_1058@

大佬总结

以上是大佬教程为你收集整理的PIE SDK与OpenCV结合说明文档全部内容,希望文章能够帮你解决PIE SDK与OpenCV结合说明文档所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。