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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python延时函数_Python实现屏幕自动截图

發(fā)布時(shí)間:2024/10/12 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python延时函数_Python实现屏幕自动截图 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

教程目錄

需要實(shí)現(xiàn)的功能:自動(dòng)屏幕截圖

具體需求:

1. 支持設(shè)置截圖頻率和截圖文件存儲(chǔ)路徑

2. 在存儲(chǔ)截圖時(shí)判斷與前一張截圖的相似度,只有屏幕發(fā)生了顯著的變化才存儲(chǔ)截圖

所需技術(shù)(搜索關(guān)鍵詞):

1. 屏幕截圖

推薦教程:https://blog.csdn.net/m0_37868504/article/details/86246810

2. 圖片相似度比較

推薦教程:https://blog.csdn.net/lly1122334/article/details/89431244#_18

說(shuō)明:PIL的抓取效率比文中說(shuō)得要高,平均在50-90毫秒之間(配置:1920*1080 I7-7700 NVIDIA-GTX-1060-6GB)

應(yīng)用場(chǎng)景:

1. 截取視頻中的各個(gè)鏡頭

2. 截取游戲中的各個(gè)場(chǎng)景、地圖


實(shí)現(xiàn)思路

  根據(jù)需求,我們可以得出如下流程圖(忽略延時(shí)環(huán)節(jié))如下:

屏幕自動(dòng)截圖流程圖

其中執(zhí)行屏幕截圖,可以使用Pillow(PIL)的ImageGrab函數(shù);比較截圖是否差異明顯可以使用numpy的余弦相似度比較。


實(shí)現(xiàn)代碼

import datetimeimport timeimport numpy as npfrom PIL import ImageGrabfrom scipy.spatial.distance import pdistdef cosine(image1, image2):""" 比較兩幅圖片(兩個(gè)一維數(shù)組)的余弦相似度:param image1: 圖片1的一維數(shù)組:param image2: 圖片2的一維數(shù)組:return: 兩幅圖片(兩個(gè)一維數(shù)組)的余弦相似度 """cosin = np.vstack([image1, image2])return pdist(cosin, 'cosine')[0]def save_image(image, pid: int, path: str):""" 存儲(chǔ)截圖文件:param image: 截圖對(duì)象:param pid: 截圖ID:param path: 截圖文件存儲(chǔ)路徑 """name_time = str(datetime.datetime.now().strftime("%Y%m%d_%H%M%S")) # 生成文件名中的時(shí)間部分image.save(path + name_time + "_" + str(pid).zfill(3) + ".png") # 將截圖文件存儲(chǔ)到本地def auto_screenshot(inc, threshold=0.1, path="E:截圖測(cè)試"):""" 自動(dòng)屏幕截圖函數(shù):param inc: 截圖間隔時(shí)長(zhǎng)(單位:秒):param threshold: 存儲(chǔ)相似度閾值 [適用閾值列表]視頻按鏡頭截圖 = 0.1:param path: 截圖文件存儲(chǔ)路徑:return: """pid = 1 # 截圖IDnp_last = None # 上一個(gè)存儲(chǔ)的截圖while True: start_time = time.time() # 啟動(dòng)時(shí)間img_now = ImageGrab.grab() # 獲取屏幕截圖np_now = np.asarray(img_now).flatten() # 生成一維數(shù)組if np_last is not None: cosin = cosine(np_now, np_last) # 計(jì)算余弦相似度if cosin > threshold: # 如果相似度大于閾值則存儲(chǔ)該圖片save_image(img_now, pid, path) # 存儲(chǔ)屏幕截圖pid += 1np_last = np_nowprint(pid - 2, "→", pid - 1, ";相似度:", round(cosin, 5))else: # 若當(dāng)前是第一幅截圖()則自動(dòng)保存save_image(img_now, pid, path) # 存儲(chǔ)屏幕截圖pid += 1np_last = np_now end_time = time.time() # 運(yùn)行結(jié)束時(shí)間if inc - (end_time - start_time) > 0: time.sleep(inc - (end_time - start_time)) # 執(zhí)行延時(shí)if __name__ == "__main__": auto_screenshot(1)

運(yùn)行結(jié)果:

視頻自動(dòng)截圖運(yùn)行測(cè)試


作者:長(zhǎng)行 (Python系列教程:C001)

總結(jié)

以上是生活随笔為你收集整理的python延时函数_Python实现屏幕自动截图的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。