日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python人脸识别系统界面_人脸识别演示界面:python GUI--tkinter实战(1)

發布時間:2023/12/10 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python人脸识别系统界面_人脸识别演示界面:python GUI--tkinter实战(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫在前面

2018年走到尾聲,2019年寒假實習和春招的壓力撲面而來,在大學象牙塔里待了5年多,雖然計算機專業,但是編程能力弱的可憐。借抱大佬大腿馬上要參加的一個比賽,隊友已經寫好了核心功能,將界面演示的部分交給了我,順便練習(ru men)一下python的界面編程。由于所選模型底層庫的調用和模型框架必須使用python2,所以界面GUI庫的選擇有很大局限性,這里選擇了python自帶的tkinter庫,無需安裝,簡單快速,python2/3兼容,只需要更改一下一些名稱就可以移植使用。但是最大的缺點就是丑!除了丑還是丑。這里簡單記錄一下tkinter庫的使用,如果寫的不夠準確還請多多指正。

一、tkinter基礎知識

Tkinter:Tkinter 模塊(Tk 接口)是 Python 的標準 Tk GUI 工具包的接口 .Tk 和 Tkinter 可以在大多數的 Unix 平臺下使用,同樣可以應用在 Windows 和 Macintosh 系統里。Tk8.0 的后續版本可以實現本地窗口風格,并良好地運行在絕大多數平臺中。在本文中盡量列出在python2/3中的不同之處。

1、調用

導入tkinter模塊:import tkinter #python 3

import Tkinter #python 2

導入tkinter庫:from Tkinter import * #python 2

from tkinter import * #python 3

在其他模塊的調用中也有不同,后續會詳細介紹。

2、基本結構

·導入 Tkinter 模塊

·創建控件

·指定這個控件的 master, 即這個控件屬于哪一個

·告訴 GM(geometry manager) 有一個控件產生了。import Tkinter

top = Tkinter.Tk()

#創建控件、指定master、告訴master控件產生

# 進入消息循環

top.mainloop()

3、Tkinter 組件

Tkinter的提供各種控件,如按鈕,標簽和文本框,一個GUI應用程序中使用。這些控件通常被稱為控件或者部件。目前有15種Tkinter的部件,具體可以參見鏈接查看詳細參數。

組件有部分共同屬性,也有各自的特有屬性,在規定一個控件的屬性時要注意不能混用。

4、幾何管理

幾何管理簡單來說就是一個畫布的版面,規定了各個控件所在區域的位置,幾何管理方式有三種:包(pack)、網格(grid)、位置(place)。針對同一個GM不能混用幾何管理,而且tkinter會自動進行大小縮放等操作,所以必須不斷調整參數得到滿意的布局。(無法實時地進行可視化編程真是逼死強迫癥,你以為的布局和呈現的布局總是不同的)

·包:作為最基本簡單的管理方法,只需要給出方位的大體位置和控件是否延伸等參數即可完成自動的對齊,如果創建的控件比較簡單就可以使用此方法。

·網格:如果控件比較復雜,最終呈現的效果是整齊的,可以使用網格管理,只需要告訴控件需要放在第幾行第幾列即可。

·位置:如果前兩者的布局仍然無法滿足花式控件的擺放需求,那么就計算一下當下GM大小,給出準確的位置吧。規定好控件大小和具體擺放坐標(先在紙上畫好,算好...)再不斷運行看看輸出效果再調整。

二、解決思路

在本部分將介紹如何使用tkinter完成一個基本的人臉識別界面呈現的思路。

1、設計目標

我們的基本需求如下:

用戶選擇想得到分類的人臉圖片,顯示在界面中,通過點擊原始模型和修改后模型的按鈕得到分類結果和置信度;將人臉圖片添加一些擾動,顯示擾動后的效果圖,再次放入兩個模型中得到預測結果。得到四組分類結果和置信度,可以進行對比,看出模型的性能以及擾動的效果。

具體需求拆分如下:

1、用戶可以直接選擇本地圖片和攝像頭現場拍照進行人臉識別的數據源。

2、對于選擇后的圖片進行顯示,如果是本地照片將給出圖片標簽,截圖照片顯示截圖日期作為圖片標簽。

3、顯示在原始模型和修改模型中運行后的分類結果和置信度。

4、在所選圖片上選擇要添加的擾動(圖片標記)。

5、顯示觸發器和所選照片合成后的效果圖。

6、將合成圖片在原始模型和修改模型中進行預測,并給出分類結果和置信度。

2、布局效果圖

根據上述需求,繪制出理想的界面效果圖:

圖一:界面理想效果圖

3、控件布局

如圖一所示:

7個按鈕控件(Button),供用戶選擇,其中3按鈕需要出現彈窗(filedialog):選擇文件(get_file)、拍照截圖(shot_pic)、選擇擾動(get_trg);

5個標簽控件(Label),其中2個用于顯示圖片,三個分別顯示圖片標簽、分類結果、置信度;

8個輸入控件(Entry),用于輸出從后臺模型中獲取的分類結果和置信度的值。

由于控件較多,而且希望盡量整齊,這里選用grid()幾何布局來規劃控件的位置,可以在Excel里標記各個控件的大體位置,方便標注行列值:

圖二:grid()布局行列值

由于tkinter的布局會自行進行調整,所以這個demo的運行結果并不理想,比如按鈕之間的間距,整個面板在窗口的位置,還有,最想要的背景圖片!在修改了無數版的布局以后,最終呈現的效果如下:

圖三:最終運行效果圖

看到這里是不是已經覺得可以右上角小叉叉退出了?絞盡腦汁搜索配色方案,依然拯救不了tkinter呈現的效果,理想和現實的差距隔了十萬八千里。會在后面的細節中詳細介紹可以優化的細節參數。

先暫時總結強調一下tkinter不能做到的:

(1)tkinter的幾何布局不能混用:所以當我們使用了grid()進行控件布局以后,無法采用pack()進行填充背景圖片,因此多彩炫酷的背景圖沒有了,只能填充一下基本的純色;而且為了使主體功能區域處于整個窗口的中央,留下來的grid布局空白處,其實會被tkinter自行調節吞掉,不會有合適的留白,只能通過慢慢調整空間邊距獲得一些空白;

(2)控件不能選擇透明度:在tkinter中,想要調整透明度就得針對整個生成窗口進行操作,無法改變部分控件的透明度,也就沒有了扁平化的按鈕和好看的文本顯示框。(題外話:當生成一個完全透明的,隱藏標題欄的窗口時,會發生什么?)

(3)對于插入圖片的格式有嚴格要求:tkinter自己只認gif,而且將jpg和png強制轉換成gif也是無法識別的,想擴展這個,裝pillow庫實現,調用語句:from PIL import Image, ImageTk

看到此處,一定破滅了夢想,如果不是因為只能用python2,還是去嘗試pyqt寫界面吧。下一篇文章將每個模塊的具體實現進行代碼描述,而且會針對如何調用攝像頭實現截圖進行詳細介紹!

see you again~

參考鏈接:

總結

以上是生活随笔為你收集整理的python人脸识别系统界面_人脸识别演示界面:python GUI--tkinter实战(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。