PIE调用Python返回得到直方图矩阵数组
前段时间我研究了PIE SDK与Python的结合,已经能成功的通过C#调用Python,获得彩色直方图。(上一篇随笔中有分享:https://www.cnblogs.com/yuan1120/p/11126869.html )
在上次成功的基础上,这次我打算通过C#调用Python,返回得到直方图矩阵的数组,方便用于各种特征值的计算。
结果如下图所示:
先打开一张栅格图片


开发环境:vs2013 framework4、 python 3.7
通过Python中的这三个模块 PIL、numpy、matplotlib可以得到直方图矩阵数组,Python代码如下:
# -*- coding: utf-8 -*-
import sys
from PIL import Image
from PIL import ImageDraw
import numpy as np
import matplotlib.pyplot as plt #索引传入图片地址
aaa=sys.argv[1]
im = Image.open(aaa)
r,g,b=im.split() width, height = im.size
rpix = r.load()
gpix = g.load()
bpix = b.load()
his1 = [0]*768
for aw in range(width):
for ah in range(height):
p_r = rpix[aw,ah]
p_g = gpix[aw,ah]+256
p_b = bpix[aw,ah]+512
his1[p_r] = his1[p_r]+1
his1[p_g] = his1[p_g]+1
his1[p_b] = his1[p_b]+1 a=[str(i) for i in his1]
b=' '.join(a)
#以字符串形式返回
print(b)
C#代码如下:
注意添加引用System.Threading.Tasks
private void 外部调用ToolStripMenuItem_Click(object sender, EventArgs e)
{
//启动一个进程
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.Exited += p_Exited; 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开发\7.py" + " " + m_InputFile1; //构造参数,将算法文件(.py)和算法参数一并传入,以空格间隔
p.EnableRaisingEvents = true;
p.Start(); //注意,如果想从python中返回获取字符串,一定要加入下面三句
p.BeginOutputReadLine();
p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
p.WaitForExit();
}
进程退出时,启动
private void p_Exited(object sender, EventArgs e)
{
System.Diagnostics.Process p = sender as System.Diagnostics.Process;
MessageBox.Show(histo);
} //输出打印的信息
private void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
if (!string.IsNullOrEmpty(e.Data))
{
histo = e.Data + Environment.NewLine;
}
}
有帮助的话,记得点个赞支持一下哦~
也欢迎各位评论,指点,交流
PIE调用Python返回得到直方图矩阵数组的更多相关文章
- PIE调用Python获得彩色直方图
前段时间我一直在研究PIE SDK与Python的结合,因为在我的开发中,我想获取一张图片的统计直方图,虽然在SDK中有提供关于直方图的类接口(如IStatsHistogram 接口.Histogra ...
- c++调用python系列(1): 结构体作为入参及返回结构体
最近在打算用python作测试用例以便对游戏服务器进行功能测试以及压力测试; 因为服务器是用c++写的,采用的TCP协议,当前的架构是打算用python构造结构体,传送给c++层进行socket发送给 ...
- python调用数据返回字典dict数据的现象2
python调用数据返回字典dict数据的现象2 思考: 话题1连接:https://www.cnblogs.com/zwgbk/p/10248479.html在打印和添加时候加上内存地址id(),可 ...
- python调用数据返回字典dict数据的现象1
python调用数据返回字典dict数据的现象1 思考: 可以看到这两种情况,区别在于构造函数make()里赋值给字典dict的方式不同.使用相同的调用方式,而结果却完全不同.可以看到第二种情况才是我 ...
- 解决方案:c调用python,PyImport_Import或者PyImport_ImportModule总是返回为空
下面c_python_utils.h是处理工具函数,test.cpp是测试程序,hello.py是python类 可是当我集成到项目中的时候,PyImport_Import总是返回为空,起初我以为是i ...
- Java调用Python脚本并获取返回值
在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...
- Java调用Python相关问题:指定python环境、传入参数、返回结果
本篇文章涉及到的操作均在Windows系统下进行,Java调用python在原理上不难,但是可能在实际应用中会有各种各样的需求,网上其他的资料很不全,所以又总结了这篇文章,以供参考. 一.指定pyth ...
- Java-调用R语言和调用Python(前后端展示)
1. 背景 R语言和Python用于数据分析和数据处理,并生成相应的直方图和散点图 需要实现一个展示平台,后端使用Java,分别调用R语言和调用Python,并返回数据和图给前端显示 这个平台主要实现 ...
- android开发中调用python代码(带参数)
android开发主要用到的是java代码,但是当开发涉及到一些算法时,往往用python可以提高软件的运行速度,也更加便捷,这里分享自己项目调用python代码的方式,主要有以下几个步骤(个人方法, ...
随机推荐
- android studio 菜单中的app运行按钮上有个叉号,原因与解决办法(自己去百度)
http://blog.csdn.net/sz0268/article/details/51706397 : 在Android studio写代码中,直接建立项目,写代码然后运行是不会一般是不会出现这 ...
- 读取树莓派4B处理器(CPU)的实时温度
读取树莓派4B处理器(CPU)的实时温度 树莓派发布4B后,性能提升了不少,但是温度也是高的不行,所以最好配置一个小风扇和散热片还是比较好的 俩种办法都可以实现 1.Shell命令读取 打开终端 cd ...
- docker环境无法执行jmap -heap 56命令
很奇怪的问题,但是jstack可以执行 解决方法: docker 内部使用jmap 需要启动容器时候配置权限:docker run --privileged=true --cap-add=SYS_P ...
- js 时间戳转化为时间
// 时间戳转为时间 bb="xxxx"://时间戳 var date = new Date(bb); Y = date.getFullYear() + '-'; M = (dat ...
- uni-app学习(四)好用的插件2
1. uni-app学习(四)好用的插件2 1.1. 树形结构 点击这里 1.2. 下拉刷新上拉加载组件 如果想把下拉上拉做成自定义的,更加好看,可以使用这个插件 地址这里 举个例子 1.3. 浮动键 ...
- Xcode 11新建工程.--iOS 13 SceneDelegate适配
收录文章::::::::::::::: iOS 13 适配要点总结 在Xcode 11 创建的工程,运行设备选择 iOS 13.0 以下的设备,运行应用时会出现黑屏现象.原因: Xcode 11 默认 ...
- 打开Visual Studio 2017报错:未能正确加载“VSTS for Database Professionals Sql Server Data-tier Application”包
出现如下错误 解决办法 > cmd > regsvr32 %windir%\system32\jscript.dll
- curl ftp libcurl 功能使用
struct FtpFile { const char *filename; FILE *stream; }; static size_t my_fwrite(void *buffer, size_t ...
- 工具类ToastUtil 避免在子线程中使用抛异常 "Can't create handler inside thread that has not called Looper.prepare()"
package com.example.kbr.utils; import android.view.Gravity; import android.widget.Toast; import io.r ...
- 高并发高可、O2O、微服务架构用学习网站
高并发高可.O2O.微服务架构用学习网站 https://www.itkc8.com 非常感谢http://www.cnblogs.com/skyblog/p/5044486.html 关于架构,笔者 ...