程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

10行Python代碼能做出哪些有趣的事情?

編輯:Python

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 作為最為著名的計算機視覺工具,基於它我們也可以做很多有趣的事情 首先我們安裝好 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:掃一下有驚喜~

ftp 服務器

可能很多人不知道,通過 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讀取文件方法


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved