opencv畫框返回坐標 python_[python]依靠pynput和pyautogui替換ahk

e92595c4c50dcb483cb132606adb28e1.png

autohotkey當然是不錯的工具,但是這個東西的社群一直發展的不行。從開始學習python以后,我就不時會希望能找到別的工具替代ahk。Python的眾多包里面確實是有對應的工具的:模擬鼠標和鍵盤的操作可以用pyautogui,而捕捉熱鍵則可以使用pynput

模擬鼠標點擊

這一次的實例是利用python給aegisub這個軟件做一個播放的快捷鍵。在這個軟件里面,如果你開始輸入字幕以后,想要重新播放選定時間段的音頻只能通過鼠標操作,這實在是非常累人的事情。這里通過pyautogui的 locateOnScreen來利用按鈕截圖找到按鈕。

import pyautogui
def click_play_for_aegis():ori_pos = pyautogui.position()button_play_location = pyautogui.locateOnScreen(r'C:UsersAdministratorPicturesplay_button.jpg',confidence=0.7)click_pos_x = button_play_location.left+int(button_play_location.width/2)click_pos_y = button_play_location.top+int(button_play_location.height/2)pyautogui.click(click_pos_x,click_pos_y)pyautogui.moveTo(ori_pos.x,ori_pos.y)

需要注意的是:

  1. 我的aegisub軟件是放在主顯示器上面的,如果放在副顯示器上有時會出錯
  2. locateOnScreen是識別按鈕位置的主要語句。添加了confidence這個可選參數以后可以讓pyautogui作模糊的搜索,但是,如果要用這個參數首先要安裝opencv。關于如何安裝opencv的python binding,可以參考我之前的這個文章(mac os與否影響不大):路人乙小明:open cv,tensorflow這些包在Mac os中的安裝
  3. locateOnscreen返回的是一個box對象,包括x坐標,y坐標,寬度和高度,用這些就可以算出中心點,然后讓鼠標去點擊那個中心點就好了

pyautogui的文檔可以參考這里https://pyautogui.readthedocs.io/en/latest/

添加快捷鍵

到這里我們還沒有個上面的功能添加快捷鍵。這個功能需要依靠pynput這個包來實現。(pynput這個包最近幾年沒有更新了,這是比較可惜的事情),文檔在這里

具體到添加快捷鍵這一部分,pynput有一個叫做GlobalHotKeys的類可以幫你快速添加快捷鍵,比如像下面的代碼就可以把ctrl+p綁定給剛才定義的函數click_play_for_aegis

from pynput import keyboard
def on_activate_p():click_play_for_aegis()with keyboard.GlobalHotKeys({'<ctrl>+p':on_activate_p}) as h:h.join()

接下來只需要運行這個python代碼,然后ctrl+p[1]這個快捷鍵就可以實現點擊特定按鈕的功能了。


如果你想知道某一個按鍵的名稱是什么,那可以參考文檔里面的代碼:

# hotkey name probe0-------------------
def on_activate_p():print('windows+p pressed')click_play_for_aegis()with keyboard.GlobalHotKeys({'<win>+'
})def on_press(key):try:print('alphanumeric key {0} pressed'.format(key.char))except AttributeError:print('special key {0} pressed'.format(key))def on_release(key):print('{0} released'.format(key))if key == keyboard.Key.esc:# Stop listenerreturn False# Collect events until released
with keyboard.Listener(on_press=on_press,on_release=on_release) as listener:listener.join()

這樣當你按下一個按鍵的時候,在python的輸出里就會寫出對應的名稱了。

參考

  1. ^順帶一提,好像aegisub里面ctrl+p是播放視頻的快捷鍵,所以剛開始用這個代碼的時候播放行為有些奇怪,把ctrl+p這個快捷鍵從aegisub軟件中去除以后就可以正常使用了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539312.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539312.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539312.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Hadoop SequenceFile

apache原文&#xff1a;http://hadoop.apache.org/docs/r1.0.4/api/org/apache/hadoop/io/SequenceFile.html 概念&#xff1a; SequenceFile是一個由二進制序列化過的key/value的字節流組成的文本存儲文件&#xff0c;它可以在map/reduce過程中的input/output 的format時被使…

機器學習算法平臺alink_Alink漫談(十二) :在線學習算法FTRL 之 整體設計

Alink漫談(十二) &#xff1a;在線學習算法FTRL 之 整體設計[Toc]0x00 摘要Alink 是阿里巴巴基于實時計算引擎 Flink 研發的新一代機器學習算法平臺&#xff0c;是業界首個同時支持批式算法、流式算法的機器學習平臺。本文和下文將介紹在線學習算法FTRL在Alink中是如何實現的&a…

Linux Shell獲取系統資源使用百分比(CentOS)

CPU使用率&#xff1a; top -b -n 1 | head -n 4 | grep "^Cpu(s)" | awk {print $2} | cut -d u -f 1 內存使用率&#xff1a; free -m | grep ^- | awk {print $3/($3$4)*100"%"} IO使用率&#xff08;FS_PATH的值改成df -h出來的那些Filesystem名稱即可…

html城市繪制,HTML5/Canvas二分法構建城市版圖

JavaScript語言&#xff1a;JaveScriptBabelCoffeeScript確定var ctx fullscreenCanvas().ctx;var canvas ctx.canvas;function Rect(pos, width, height) {this.pos pos;this.width width;this.height height;}Rect.prototype.update Function.prototype;Rect.prototype…

探測器反向偏壓_近紅外和可見光雙模有機光電探測器

更多精彩&#xff0c;點擊上方藍字關注我們&#xff01;中英標題近紅外和可見光雙模有機光電探測器Near-infrared and Visible Light Dual-mode Organic Photodetectors圖文導讀研究報告了一種具有三層可見光吸收體/光學間隔層/近紅外(NIR)光吸收體結構的雙模有機光電探測器(OP…

html里post請求404,請求登陸頁面post請求404錯誤,OPTIONS請求通過

點擊登錄的時候option請求是通過的&#xff0c;但post請求失敗。服務端代碼app.js&#xff1a;const express require(‘express’)const bodyParser require(‘body-parser’)const cors require(‘cors’)const router require(’./router/index’)// 創建 express 應用c…

python貪吃蛇畢業設計_【干貨|python項目實例——貪吃蛇】- 環球網校

【摘要】當今世界充滿了各種數據&#xff0c;而python是其中一種的重要組成部分。然而&#xff0c;若想其有所應用&#xff0c;我們需要對這些python理論進行實踐。其中包含很多有趣的的過程&#xff0c;然后將其用于某些方面。其中一種應用就是python項目實例。今天環球網校的…

PWA即將推向所有Chrome平臺

\看新聞很累&#xff1f;看技術新聞更累&#xff1f;試試下載InfoQ手機客戶端&#xff0c;每天上下班路上聽新聞&#xff0c;有趣還有料&#xff01;\\\大多數人應該都聽說了微軟已經著手在Windows商店中增加PWA&#xff0c;這是一個重磅消息&#xff01;\\\\漸進增強式Web應用…

c++代碼轉為go_Go語言學習筆記六--string編碼

分解探索string編碼轉為byte數組func main() {s : "Hi小智加油!"fmt.Println("len(s):",len(s)) //len(s): 15 為什么是15呢?for _, v : range []byte(s) {fmt.Printf("%X ",v) //%X 轉為16進制//48 69 E5 B0 8F E6 99 BA E5 8A A0 E6 B2 B9 21…

Linux機器件拷貝文件

常用命令有&#xff1a;sftp&#xff0c;scp sftp [rootzengmg develop_soft]# sftp 192.168.255.132Connecting to 192.168.255.132... The authenticity of host 192.168.255.132 (192.168.255.132) cant be established. RSA key fingerprint is bd:09:eb:22:2f:ed:95:57:ab…

steam游戲時長計算機,我加入steam五年了,盤點下我買過的22款正版單機游戲

我加入steam五年了&#xff0c;盤點下我買過的22款正版單機游戲2020-02-17 10:50:07104點贊72收藏37評論大家好吖&#xff0c;在2015年的時候朋友就推薦了我入坑steam&#xff0c;不過那個時候更多的知道這是個dota啟動器&#xff0c;慢慢的steam也越來越出名啦&#xff0c;中國…

AdPlayBanner:功能豐富、一鍵式使用的圖片輪播插件

概述 AdPlayBanner&#xff1a;功能豐富、一鍵式使用的圖片輪播插件詳細 代碼下載&#xff1a;http://www.demodashi.com/demo/11312.html AdPlayBanner是一個Android平臺基于ViewPager實現的輪播圖插件&#xff0c;主要用以自動或者手動地播放輪播圖&#xff0c;提供了Fresco、…

pycharm運行模型時怎么設置權重?_使用AMP和Tensor Cores得到更快速,更節省內存的PyTorch模型...

點擊上方“AI派”&#xff0c;關注公眾號&#xff0c;選擇加“星標“或“置頂”導讀只需要添加幾行代碼&#xff0c;就可以得到更快速&#xff0c;更省顯存的PyTorch模型。你知道嗎&#xff0c;在1986年Geoffrey Hinton就在Nature論文中給出了反向傳播算法&#xff1f;此外&…

引入靜態變量_Common Lisp變量的一些事情

Lisp-1 vs Lisp-2[1]Scheme的求值模型非常簡單&#xff1a;只是用一個名字空間&#xff0c;所有表達式中相應位置的值應該是明確的。Common Lisp和Scheme最大的不同是&#xff0c;函數名字空間和數據的名字空間是分離的。操作函數名字空間的語句包括&#xff0c;defun&#xff…

JobTracker和TaskTracker

轉載&#xff1a;http://blog.csdn.net/keda8997110/article/details/8348705 ----------------------------------------------------------------------------------------- JobTracker和TaskTracker JobTracker 對應于 NameNode TaskTracker 對應于 DataNode DataNode 和Na…

c理c利用計算機怎么彈,通過匯編一個簡單的C程序,分析匯編代碼理解計算機是如何工作的...

通過匯編一個簡單的C程序&#xff0c;分析匯編代碼理解計算機是如何工作的計算機的工作方式&#xff1a;現代計算機的基本體系結構都是采用馮諾依曼結構&#xff0c;馮諾依曼的設計思想最重要之處是"存儲程序"的這個概念。計算機的工作過程&#xff0c;就是執行程序的…

Linux安裝MySQL的兩種方法

原文鏈接&#xff1a;http://blog.csdn.net/superchanon/article/details/8546254 --------------------------------------------------------------------------------------- 1. 運行平臺&#xff1a;CentOS 6.3 x86_64&#xff0c;基本等同于RHEL 6.3 2. 安裝…

jenkins 手動執行_想知道如何用Jenkins自動執行Python腳本輸出測試報告?

前言在用python做自動化測試時&#xff0c;我們寫好代碼&#xff0c;然后需要執行才能得到測試報告&#xff0c;這時我們可以通過 Jenkins 來進一步完成自動化工作。借助Jenkins&#xff0c;我們可以結合 Git/SVN 自動拉取代碼&#xff0c;可以設置定時構建&#xff0c;接著就可…

VR 影院,約嗎?

世界第一家 VR 影院已經開張&#xff0c;朋友&#xff0c;去不&#xff1f; 世界第一家 VR 影院正式開張 &#xff08;無大屏的 VR 電影院&#xff09; 在被稱為 VR 元年的 2016 年&#xff0c;越來越多的人加入了這個新興的領域&#xff0c;各種傳統應用也在被 VR 包裝之后以…

redis cluster 分布式鎖_關于分布式鎖原理的一些學習與思考redis分布式鎖,zookeeper分布式鎖...

首先分布式鎖和我們平常講到的鎖原理基本一樣&#xff0c;目的就是確保&#xff0c;在多個線程并發時&#xff0c;只有一個線程在同一刻操作這個業務或者說方法、變量。在一個進程中&#xff0c;也就是一個jvm 或者說應用中&#xff0c;我們很容易去處理控制&#xff0c;在jdk …