[Python作品]公司用人臉辨識系統DIY Part.3 - 人員管理系統:PyQt5應用




  各位好,這次小弟又要來分享一下一些有趣的東東了~因為一些因緣際會,小弟有了人臉辨識系統的開發機會,後續又因為一些因緣際會停止開發了。根據開源的精神,有些內容小弟就拿來當作這次的知識分享嘍~因為這是個算有點規模的開發案,一次的篇題肯定是不夠的,所以小弟打算分成4個Part來做分享,也希望幫助到遭遇相關開發問題的朋友喔!







  因為人臉辨識系統需要管理人臉資料庫以及各自使用者的設定檔,這時候我們會需要有個UI介面跟檔案去管理這些人員清單,因此這邊也稍微著墨一下這個人臉辨識系統所寫到的人員管理系統。



  關於控制視窗元件的方法,基本上大多都寫在controller.py裡面的class StaffWindow_controller以及StaffList資料夾內的Staff.py裡面。進入人員管理系統的畫面時,程式上市讀取controller.py,有任何修改人員清單內容的方法,全部都是呼叫Staff.py來實行的。因為不太會有程式卡死的問題,這邊並沒有使用到QThread來撰寫。


  工作原理上,只要table widget裡面有任何資料被變更,就會觸發cellChanged事件以及self.cell_changed方法;按下btnDelete或是btnInsert則個別會觸發self.delete_selection方法以及self.insert_one_row方法。創造table widget內的item的方法是固定的,必須用QtWidgets.QTableWidgetItem來設定一個"儲存格",並且設定它的setTextAlignment(對齊)、setFlags(內容唯讀與否),最後用setItem來創建一個"儲存格"。


  在最終的呈現上,小弟希望變更ID時會自動變更資料的儲存資料夾(無論是"資料"設定值或是實際的資料夾)。變更名稱、打卡聲、e-mail之後,會相對應的更新作為倉庫的csv檔案(本範例雖然存成txt檔,但它的儲存格式的精神一樣是csv檔)。選擇數列並按下"刪除數列"會刪掉table widget內以及csv內的資料。點選"插入一列"則會在最開頭插入一列新的使用者ID等資料,並創建資料夾。



pandas


  在讀取與寫入人員清單與設定方面,小弟採用了可以簡單維護的pandas這個API來將人員表格存成csv檔。可以用pd.DataFrame將dict格式的資料用pandas讀取至變數內。使用pd.concat可以將兩個dict或是dataframe給合併在一起。用(dataframe).to_csv可以將dataframe儲存csv檔到指定的路徑。用pd.read_csv則可以從指定的路徑讀取csv檔進dataframe變數。用(dataframe).sort_values可以將dataframe進行從小到大的排序。



os, shutil


  針對檔案是否存在,或是要更名、刪除檔案等等,用os與shutil這些API來操作就對了。os.path.exists可以偵測路徑檔案或資料夾是否存在。os.mkdir可以製造一個資料夾。shutil.rmtree可以刪除資料夾本身與資料夾內的所有檔案。os.rename可以將檔案或資料夾更名。












人臉辨識系統原始碼:
https://github.com/hcyang1227/PythonProj_Fin/tree/master/MDIT_Punch_Card_System

沒有留言:

張貼留言