Python 憑借語法的易學性,代碼的簡潔性以及類庫的豐富性,贏得了眾多開發者的喜愛。下面我們來看看,用不超過10行代碼能實現些什麼有趣的功能
百度飛槳 paddlepaddle 是百度開源的深度學習工具,其功能強大,基於該工具我們可以實現很既有趣又有用的功能
在使用之前,我們肯定要先安裝喽
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
pip install paddlehub -i https://mirror.baidu.com/pypi/simple
安裝完成後,我們來體驗幾個有趣的項目
批量獲取指定目錄下的圖片,然後通過 paddlehub 訓練好的模型進行批量摳圖處理
import os
import paddlehub as hub
# 加載模型
humanseg = hub.Module(name='deeplabv3p_xception65_humanseg')
path = './heben/' # 文件目錄
# 獲取文件列表
files = [path + i for i in os.listdir(path)]
# 摳圖
results = humanseg.segmentation(data={'image': files})
for result in results:
print(result)
Output:
我們可以看到,經過處理之後的圖片自動保存在目錄 humanseg_output 下面
我們可以對比下處理前後圖片的差異
整體來看,摳圖效果還是非常棒的!
注意:如果執行代碼沒有生成對應的 out 文件夾,可以重新手動安裝模型再嘗試
hub install deeplabv3p_xception65_humanseg==1.0.0
飛槳同樣有很強的自然語言處理能力,在處理文字情緒識別方面也非常突出
senta = hub.Module(name='senta_lstm') # 加載模型
sentence = [ # 准備要識別的語句
'你好漂亮', '你真難看呀', '他好難過', '我不開心', '這是一款什麼游戲,真垃圾', '這個游戲太好玩了',
]
results = senta.sentiment_classify(data={'text':sentence}) # 情緒識別
# 輸出識別結果
for result in results:
print(result)
Output:
可以看出,文字情緒的識別還是非常准確的,當然我們這裡語料比較少,在大語料、更復雜的語言環境下,飛漿的表現如何還有待驗證
當今社會人臉識別可以說是隨處可見,而在疫情肆虐的今天,口罩似乎也成為我們日常出現必備的條件,飛漿工具也增加了口罩識別功能,我們來看看
# 加載模型
module = hub.Module(name='pyramidbox_lite_mobile_mask')
# 圖片列表
image_list = ['face2.jpg']
# 獲取圖片字典
input_dict = {'image':image_list}
# 檢測是否帶了口罩
module.face_detection(data=input_dict)
face.jpg 如下
Output:
[{'data': [{'label': 'NO MASK',
'confidence': 0.9995137453079224,
'top': 478,
'bottom': 775,
'left': 1894,
'right': 2126},
{'label': 'NO MASK',
'confidence': 0.9903278946876526,
'top': 512,
'bottom': 810,
'left': 1754,
'right': 1998},
{'label': 'NO MASK',
'confidence': 0.9997405409812927,
'top': 697,
'bottom': 985,
'left': 1857,
'right': 2131},
{'label': 'NO MASK',
'confidence': 0.943692147731781,
'top': 575,
'bottom': 888,
'left': 1954,
'right': 2216}],
'path': 'face2.jpg'}]
可以看出,已經判斷出超過99%的概率,該張圖片是沒有佩戴口罩的
人臉關鍵點檢測是人臉識別和分析領域中的關鍵一步,它是諸如自動人臉識別、表情分析、三維人臉重建及三維動畫等其它人臉相關問題的前提和突破口
我們以如下這張圖片作為待檢測圖片
代碼如下
face_landmark = hub.Module(name="face_landmark_localization")
image = 'face.jpg'
result = face_landmark.keypoint_detection(images=[cv2.imread(image)],visualization=True)
print(result)
Output:
可以看到人臉關鍵點已經標注出來,並且把檢測後的圖片自動存儲在 face_landmark_output 目錄下
OpenCV 作為最為著名的計算機視覺工具,基於它我們也可以做很多有趣的事情 首先我們安裝好 OpenCV 庫
pip install opencv-python
在當今社會,誰還沒有一個兩個貓主子呢,高冷的貓咪往往會得到人們特殊的愛戴!
我們也習慣了人臉識別,今天就通過幾行代碼來看看貓臉識別是怎麼的呢
首先我們到安裝目錄下提取錨鏈識別 XML 分類器,具體目錄如下
C:\Python3\Lib\site-packages\cv2\data
可以看到有如下很多分類器
我們復制 haarcascade_frontalcatface.xml 到自己的項目下即可
# 待檢測的圖片路徑
ImagePath = './cat/cat.jpg'
# 讀取圖片
image = cv2.imread(ImagePath)
# 把圖片轉換為灰度模式
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 探測圖片中的貓臉
# 獲取訓練好的貓臉的參數數據,進行貓臉檢測
face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalcatface.xml')
faces = face_cascade.detectMultiScale(gray,scaleFactor=1.15,minNeighbors=5,minSize=(3, 3))
search_info = "Find %d face."%len(faces) if len(faces) <= 1 else "Find %d faces."%len(faces)
# 繪制貓臉的矩形區域(紅色邊框)
for (x, y, w, h) in faces:
cv2.rectangle(image, (x,y), (x+w,y+h), (0,0,255), 2)
# 顯示圖片
# cv2.imshow('Find faces!', image)
# cv2.waitKey(0)
cv2.imwrite("./cat/cat2.jpg", image)
Output:
我們編寫一個獲取實時動態視頻流的代碼,實時獲取當中的人臉信息
detector = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
while True:
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = detector.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
cv2.imshow('frame', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
注意這裡使用的分類器是 haarcascade_frontalface_default.xml,可不要用錯哦
Output:
自行在自己的電腦上嘗試下哦~
在很多時候,尤其是在線聊天時,輸了什麼也不能輸掉斗圖啊,下面的代碼可以快速生成動圖,在和朋友的斗圖當中,得勝的把握又增加了
import imageio
image_list = ['image/1.jpg','image/2.jpg', 'image/3.jpg', 'image/4.jpg']
gif_name = "dongtu.gif"
duration = 1
frames = []
for image_name in image_list:
frames.append(imageio.imread(image_name))
imageio.mimsave(gif_name, frames, "GIF", duration=duration)
Output:
二維碼在我們的生活當中實在是太重要了,收付款、快速進入網站,訪問各種統計信息等等,下面就來快速生成一個有趣的動圖二維碼
我們使用的圖片如下
代碼如下
from MyQR import myqr
url = "https://xxx.xxx.xxx"
myqr.run(words=url,version=3,
picture="4.gif",colorized=True,save_name="luobodazahui.gif",
save_dir="./")
Output:掃一下有驚喜~
可能很多人不知道,通過 Python 幾行簡單代碼,我們可以快速實現一個簡易的 ftp 服務器,這樣在局域網內進行文件傳輸不再發愁啦!
代碼非常簡單,直接運行 Python 自帶的 http 服務器即可
python -m http.server 8090
Output:
接下來我們訪問本地 IP + 端口8090
很強大,很簡單,很好用!
字符畫是一系列字符的組合,我們可以把字符看作是比較大塊的像素,一個字符能表現一種顏色,字符的種類越多,可以表現的顏色也越多,圖片也會更有層次感
我們只需要短短幾行代碼,就可以完成字符畫的制作
我們使用的圖片如下
代碼如下
IMG = "3.jpg"
WIDTH = 80
HEIGHT = 40
OUTPUT = "./ascii/ascii.txt"
ascii_char = list("[email protected]%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
# 將256灰度映射到70個字符上
def get_char(r,g,b,alpha = 256):
if alpha == 0:
return ' '
length = len(ascii_char)
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit = (256.0 + 1)/length
return ascii_char[int(gray/unit)]
im = Image.open(IMG)
im = im.resize((WIDTH,HEIGHT), Image.NEAREST)
txt = ""
for i in range(HEIGHT):
for j in range(WIDTH):
txt += get_char(*im.getpixel((j,i)))
txt += '\n'
print(txt)
#字符畫輸出到文件
with open(OUTPUT,'w') as f:
f.write(txt)
Output:
好了,這就是今天分享的內容,如果喜歡,就點個贊吧~
推薦閱讀
python 實現校園網自動登錄
強大易用!新一代爬蟲利器 Playwright 的介紹
Python如何獲取"視頻文件"的大小和時長?
超全!Python讀取文件方法