前段时间我一直在研究PIE SDK与Python的结合,因为在我的开发中,我想获取一张图片的统计直方图,虽然在SDK中有提供关于直方图的类接口(如IStatsHistogram 接口、HistogramStatDialog 类),但其中有些方法得到的结果数据是有些小问题的(已经向技术人员反应),所以打算自己写一个。

我是通过PIE的官方博文(https://www.cnblogs.com/PIESat/p/10244229.html)进行研究的,使用的方法一:通过Main传参。在技术员姐姐的耐心指导下,用Python得到我想获得的直方图,再通过C#调用Python,最后成功获得直方图。

结果如下图所示:

先打开一张栅格图片

开发环境:vs2013 framework4、 python 3.7

通过Python中的这三个模块 PIL、numpy、matplotlib可以比较容易得到我想要的直方图,Python代码如下:

 #-*- coding: UTF-8 -*-

 import sys
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt #索引传入的图片地址
aaa=sys.argv[1] src=Image.open(aaa)
r,g,b=src.split()
plt.figure("彩色直方图")
ar=np.array(r).flatten()
plt.hist(ar, bins=256, density=1,facecolor='r',edgecolor='r')
ag=np.array(g).flatten()
plt.hist(ag, bins=256, density=1, facecolor='g',edgecolor='g')
ab=np.array(b).flatten()
plt.hist(ab, bins=256, density=1, facecolor='b',edgecolor='b') #显示直方图窗口
plt.show()

C#代码如下:

注意添加引用System.Threading.Tasks

         private void 外部调用ToolStripMenuItem_Click(object sender, EventArgs e)
{
//启动一个进程
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;//重定向输出
p.StartInfo.RedirectStandardError = true;
//启动python.exe
p.StartInfo.FileName = @"G:\pythonOnhere\python.exe";//自己安装python.exe的路径
p.StartInfo.CreateNoWindow = true; string m_InputFile1 = m_InputFile.Replace(@"\", "/");//已经打开的栅格文件路径,由于python识别的路径格式和C#有一点区别,注意转换格式
p.StartInfo.Arguments = @"E:\PIE开发\2.py" + " " + m_InputFile1; //构造参数,将算法文件(.py)和算法参数一并传入,以空格间隔
p.EnableRaisingEvents = true;
p.Start();
}

有帮助的话,记得点个赞支持一下哦~
也欢迎各位评论,指点,交流

PIE调用Python获得彩色直方图的更多相关文章

  1. PIE调用Python返回得到直方图矩阵数组

    前段时间我研究了PIE SDK与Python的结合,已经能成功的通过C#调用Python,获得彩色直方图.(上一篇随笔中有分享:https://www.cnblogs.com/yuan1120/p/1 ...

  2. Java-调用R语言和调用Python(前后端展示)

    1. 背景 R语言和Python用于数据分析和数据处理,并生成相应的直方图和散点图 需要实现一个展示平台,后端使用Java,分别调用R语言和调用Python,并返回数据和图给前端显示 这个平台主要实现 ...

  3. cpp 调用python

    在用cpp调用python时, 出现致命错误: no module named site  ,  原因解释器在搜索路径下没有找到python库.可以在调用Py_Initialize前,调用 Py_Se ...

  4. c调用python

    #include <Python.h>//python33(python2.x有几个函数不对应) /* PyImport_ImportModule 导入一个Python模块并返回它的指针 ...

  5. linux+php+apache web调用python脚本权限问题解决方案

    lamp : linux + apache + mysql + php 在上篇随笔中linux+php+apache调用python脚本时出现的问题的根本原因是:apache运行时使用的apache用 ...

  6. linux+php+apache web调用python脚本权限问题

    lamp : linux + apache + mysql + php 在近期项目中使用 linux + apache + php调用python脚本是出现以下权限问题: build/bdist.li ...

  7. C#中调用python方法

    最近因为项目设计,有部分使用Python脚本,因此代码中需要调用python方法. 1.首先,在c#中调用python必须安装IronPython,在 http://ironpython.codepl ...

  8. PHP 调用Python脚本

    上次做用户反馈自动翻译,写了个python脚本,将日文的用户反馈翻译成中文,效果虽然可以,但其它不懂python的童鞋就没法使用了,所以搭了个web服务,让其他人可以通过网页访问查询.使用的是apac ...

  9. C++中调用Python脚本

    C++中调用Python脚本的意义就不讲了,至少你可以把它当成文本形式的动态链接库, 需要的时候还可以改一改,只要不改变接口, C++的程序一旦编译好了,再改就没那么方便了 先看Python的代码 代 ...

随机推荐

  1. PlayJava Day004

    今日所学: /* 2019.08.19开始学习,此为补档. */ JDK 1.6:byte , int , short , char , enum JDK 1.7:byte , int , short ...

  2. selenium设置user-agent以及对于是否是浏览器内核进行反爬

    (Session info: chrome=75.0.3770.90),不同版本方法可能会有些不同 推荐查资料网站必应可以避开一堆广告 一.user-agent设置 from selenium imp ...

  3. Java日期时间API系列2-----Jdk7及以前的日期时间类在mysql数据库中的应用

    1.java中与数据库相关的时间类 java提供与mysql方便交互的三种数据类型: java.sql.Date java.sql.Time java.sql.Timestamp 它们都是继承java ...

  4. 多线程学习二:线程池 ExecutorService

    创建线程池的2种方式: 使用线程池方式1--Runnable接口: 通常,线程池都是通过线程池工厂创建,再调用线程池中的方法获取线程,再通过线程去执行任务方法. Executors:线程池创建工厂类: ...

  5. CSS @规则

    最近在看极客时间winter大神的重学前端系列,遇到了许多不常用但是很重要的知识点.感觉视野得到了极大的开阔(打个广告,哈哈). 其中css @规则令人印象深刻.简单的做下笔记: @namespace ...

  6. c++ lesson 一(命名空间输入输出)

    // // main.cpp // C++lessonOne // // Created by keyan on 15/11/13. // Copyright © 2015年 keyan. All r ...

  7. CODING 受邀参加《腾讯全球数字生态大会》

    近日,腾讯全年最重要的一场活动--<腾讯全球数字生态大会>于昆明滇池国际会展中心正式举办.此次全球数字生态大会是腾讯战略升级后,整合互联网+数字经济峰会.云+未来峰会.腾讯全球合作伙伴三大 ...

  8. Hive性能调优(二)----数据倾斜

    Hive在分布式运行的时候最害怕的是数据倾斜,这是由于分布式系统的特性决定的,因为分布式系统之所以很快是由于作业平均分配给了不同的节点,不同节点同心协力,从而达到更快处理完作业的目的. Hive中数据 ...

  9. SSDB数据库笔记

    目录 环境 配置文件 启动服务器 客户端 SSDB:一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis. 参考文献: SSDB官网 环境 win10 下 wsl 环境 ubun ...

  10. 1. java 基本规则

    一.命名规范 1. 类名规范:首字母大写,后面每个单词首字母大写(大驼峰式),HelloWorld 2. 变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式),helloWorld 3. 方法名 ...