PIE調用Python得到彩色直方圖

        前段時間我一直在研究PIE SDK與Python的結合,由於在個人開發中,我想獲取一張圖片的統計直方圖,雖然在SDK中有提供關於直方圖的類接口(如IStatsHistogram 接口、HistogramStatDialog 類),但其中有些方法獲得的結果數據是有些小問題的(已經向技術人員反應),因此打算本身寫一個。html

        我是經過PIE的官方博文(https://www.cnblogs.com/PIESat/p/10244229.html)進行研究的,使用的方法一:經過Main傳參。在技術員姐姐的耐心指導下,用Python獲得我想得到的直方圖,再經過C#調用Python,最後成功得到直方圖。python

結果以下圖所示:算法

  先打開一張柵格圖片spa

       開發環境:vs2013 framework四、 python 3.7code

經過Python中的這三個模塊 PIL、numpy、matplotlib能夠比較容易獲得我想要的直方圖,Python代碼以下:htm

 1 #-*- coding: UTF-8 -*-
 2 
 3 import sys
 4 from PIL import Image
 5 import numpy as np
 6 import matplotlib.pyplot as plt
 7 
 8 #索引傳入的圖片地址
 9 aaa=sys.argv[1]
10 
11 src=Image.open(aaa)
12 r,g,b=src.split()
13 plt.figure("彩色直方圖")
14 ar=np.array(r).flatten()
15 plt.hist(ar, bins=256, density=1,facecolor='r',edgecolor='r')
16 ag=np.array(g).flatten()
17 plt.hist(ag, bins=256, density=1, facecolor='g',edgecolor='g')
18 ab=np.array(b).flatten()
19 plt.hist(ab, bins=256, density=1, facecolor='b',edgecolor='b')
20 
21 #顯示直方圖窗口
22 plt.show()

C#代碼以下:blog

   注意添加引用System.Threading.Tasks索引

 1         private void 外部調用ToolStripMenuItem_Click(object sender, EventArgs e)
 2         {
 3             //啓動一個進程
 4             System.Diagnostics.Process p = new System.Diagnostics.Process();
 5             p.StartInfo.UseShellExecute = false;
 6             p.StartInfo.RedirectStandardOutput = true;//重定向輸出
 7             p.StartInfo.RedirectStandardError = true;
 8             //啓動python.exe
 9             p.StartInfo.FileName = @"G:\pythonOnhere\python.exe";//本身安裝python.exe的路徑
10             p.StartInfo.CreateNoWindow = true;            
11 
12             string m_InputFile1 = m_InputFile.Replace(@"\", "/");//已經打開的柵格文件路徑,因爲python識別的路徑格式和C#有一點區別,注意轉換格式
13             p.StartInfo.Arguments = @"E:\PIE開發\2.py" + " " + m_InputFile1; //構造參數,將算法文件(.py)和算法參數一併傳入,以空格間隔
14             p.EnableRaisingEvents = true;
15             p.Start();
16         }            

有幫助的話,記得點個贊支持一下哦~
也歡迎各位評論,指點,交流接口

相關文章
相關標籤/搜索