欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python在屏幕上點擊特定按鈕或圖像效果實例

 更新時間:2022年09月26日 11:11:37   作者:zzfengling  
這篇文章主要給大家介紹了關于python在屏幕上點擊特定按鈕或圖像效果的相關資料,文中通過實例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友可以參考下

想要的效果

大概就是搞個windows桌面自動點擊程序,以新浪微博自動點贊為例。

需要用到的函數(shù)庫

PyAutoGUI——圖形用戶界面自動化(主要用到這個)

PyAutoGUI是Python功能強大的UI自動化庫,其目的是可以用程序自動控制鼠標和鍵盤操作,主要用來實現(xiàn)PC端的UI自動化。

  • 有鼠標控制、鍵盤操作、屏幕截圖、圖片定位、消息對話框、窗口操作等功能;
  • 有倒計時、鼠標坐標顏色抓取小程序、UI自動化迷你語言等實用工具;
  • 有故障安全、通用暫停等機制。 

Pillow——圖像處理

該庫提供廣泛的文件格式支持、高效的內(nèi)部表示和相當強大的圖像處理功能。旨在快速訪問以幾種基本像素格式存儲的數(shù)據(jù)。它應該為一般的圖像處理工具提供堅實的基礎。

  • 該庫包含基本的圖像處理功能,包括點操作、使用一組內(nèi)置卷積內(nèi)核進行過濾以及色彩空間轉(zhuǎn)換。
  • 該庫還支持圖像大小調(diào)整、旋轉(zhuǎn)和任意仿射變換。
  • 有一種直方圖方法允許您從圖像中提取一些統(tǒng)計信息。這可用于自動對比度增強和全局統(tǒng)計分析。

OpenCV——是開源的計算機視覺和機器學習庫(不太了解,問題不大)

它輕量級而且高效——由一系列 C 函數(shù)和少量 C++ 類構(gòu)成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。

前面的看不看都一樣進入正題

例如實現(xiàn)功能,打開新浪微博首頁,我們要識別圖中的的贊,并點擊。

1),使用pyautogui.mouseInfo()獲取目標圖片(屏幕上需要點擊的圖像)位置,以新浪微博點贊為例,寫代碼截取點贊的手勢圖片,代碼如下:

import pyautogui
pyautogui.mouseInfo()#獲取點贊圖片的位置(1127,756,1146,775)

from PIL import Image
import pyautogui
import time
time.sleep(2)#留一點切換頁面時間
im = pyautogui.screenshot()#截取整個屏幕
om = im.crop((1127, 756, 1146, 775))#根據(jù)截取的屏幕僅截取“帶贊的手勢圖片”,用pyautogui.mouseInfo()獲取圖片的位置(1127,756,1146,775),這里截取區(qū)域用到了Pillow
om.save(r"C:\Users\zz\Desktop\dianzan.png")#將圖片保存供pyautogui.locateOnScreen()使用
 

截圖效果:

ps:自己手動截圖也一樣,還有最重要每當初次運行時要確保圖像不出錯還是重新用程序截一個圖靠譜。

2),獲取贊截圖后使用pyautogui.locateOnScreen()識別圖像獲取贊圖像的位置,再用pyautogui.center()獲取中心點,代碼如下:

import pyautogui
import time
 
time.sleep(1)
 
def zan():
    time.sleep(1)  # 這個可以用來防止操作過快
    left, top, width, height = pyautogui.locateOnScreen(r"C:\Users\zz\Desktop\dianzan.png")  # 尋找剛才保存點贊手勢圖片
    center = pyautogui.center((left, top, width, height))  # 尋找圖片的中心
    pyautogui.click(center)
    print('點贊成功!')
 
count = 10    # 為了防止一直運行下去,點一定數(shù)量的贊就結(jié)束,自己定義
while count:
    try:
        zan()  # 調(diào)用點贊函數(shù)
        count -= 1
    except TypeError:           # 錯誤類型沒有也文圖不大,哈哈哈
        pyautogui.scroll(-500)  # 本頁沒有圖片后,滾動鼠標;
        print('沒有找到目標,屏幕下滾~')
print("點10個贊結(jié)束!")

 運行結(jié)果:

代碼輸出如下:

 一般基本原理以上就是了,大概。。。。但是要提高pyautogui.locateOnScreen()識別圖像速度和效率的話看下面:

圖片定位不穩(wěn)定的四種解決方案

方案介紹

1.模糊定位:借助opencv的來提高識別率,加入confidence參數(shù)調(diào)整識別準確度,當confidence越小,定位的精度就會越低,從而實現(xiàn)模糊定位。

2.灰度匹配:加入grayscale參數(shù),當grayscale=True時會使圖像和屏幕截圖中的顏色去飽和,解決由于顯示器飽和度不同從而引起的顏色細微差異因而導致的圖像定位失敗問題。

3.指定范圍:加入region參數(shù),可以控制找圖范圍提高找圖效率。

4.多圖定位:圖標在不同場景下可能有不同的顯示效果,可以把不同顯示效果的多張圖片歸為一個事件,對多張圖進行循環(huán)查找,定位一張圖就可以對整個事件進行定位。

 1.模糊定位

pyautogui.locateOnScreen()函數(shù)中加入confidence參數(shù),當confidence的值決定精度,代碼如下:

left, top, width, height = pyautogui.locateOnScreen(r"C:\Users\zz\Desktop\dianzan.png", confidence=0.9)
#太長了下面用xy表示

2.灰度匹配

pyautogui.locateOnScreen()函數(shù)中加入grayscale=True,就可以實現(xiàn)灰度匹配,代碼如下:

xy = locateOnScreen(r"C:\Users\zz\Desktop\dianzan.png", grayscale=True)

3.指定范圍

加入region參數(shù),可以控制找圖范圍,從而提高找圖效率。region(x,y,width,height),其中x,y為范圍左上角坐標,width,height為范圍的寬和高,代碼如下:

xy = pyautogui.locateOnScreen(r"C:\Users\zz\Desktop\dianzan.png",  region=(1128, 208, 1158, 1027))

4.多圖定位

可以對一個圖標截多張不同的圖,每一張圖都代表這個圖標,只要定位其中一張圖就能定位這個圖標。對locateOnScreent()函數(shù)進行二次封裝,多張圖片之間用 ' | ' 間隔,實現(xiàn)循環(huán)找圖,代碼如下:

from pyautogui import *
 
#把字符串按'|'切割
def word_cut(args):
    tup = []
    if '|' in args:
        re1 = args.split('|')
        return re1
    else:
        tup.append(args)
        return tuple(tup)
 
#判斷圖像是否找到,如果找到就返回True,沒找到就跳過
def assertPIC(args):
    if locateOnScreen(args) == None:
        pass
    else:
        return True
 
#循環(huán)找圖,找到就返回圖像中心點,沒找到就打印'沒找到'
def img_locat(args):
    arg = word_cut(args)
    for i in range(len(arg)):
        if assertPIC(arg[i]):
            return center(locateOnScreen(arg[i]))
        else:
            print('沒找到')
 
#測試
print(img_locat('test1.png|test2.png'))

所以最后的程序可以這樣:

import pyautogui
import time
 
time.sleep(1)
 
def zan():
    time.sleep(3)  # 這個可以用來防止操作過快
    left, top, width, height = pyautogui.locateOnScreen(r"C:\Users\zz\Desktop\dianzan.png",
                                                        confidence=0.9, region=(1101, 190, 1240, 1034))  # 尋找剛才保存點贊手勢圖片
    center = pyautogui.center((left, top, width, height))  # 尋找圖片的中心
    pyautogui.click(center)
    print('點贊成功!')
 
count = 10  # 為了防止一直運行下去,點一定數(shù)量的贊就結(jié)束,自己定義
while count:
    try:
        zan()  # 調(diào)用點贊函數(shù)
        count -= 1
    except TypeError:           # 錯誤類型沒有也文圖不大,哈哈哈
        pyautogui.scroll(-500)  # 本頁沒有圖片后,滾動鼠標;
        print('沒有找到目標,屏幕下滾~')
 
print("點10個贊結(jié)束!")

補充:Python實現(xiàn)鼠標自動控制到屏幕指定位置,并點擊

import pyautogui
pyautogui.moveTo(0, 0, duration=1)
pyautogui.click()

代碼解釋:

0, 0是鼠標需要移動到的位置,這邊是屏幕左上角的位置坐標

duration=1是將鼠標移動到指定坐標的間隔時間,這邊是1秒

pyautogui.click()是點擊

注:

屏幕的位置坐標點可以通過微信截圖看到坐標

總結(jié)

到此這篇關于python在屏幕上點擊特定按鈕或圖像效果的文章就介紹到這了,更多相關python屏幕上點擊按鈕或圖像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python連接Redis庫常見操作全面詳解

    Python連接Redis庫常見操作全面詳解

    本文將介紹如何在Python中進行Redis操作,包括連接Redis、數(shù)據(jù)存儲、數(shù)據(jù)檢索和其他常見操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • GraphQL在Django中的使用教程

    GraphQL在Django中的使用教程

    這篇文章主要介紹了GraphQL在Django中的使用教程,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • 搭建Python的Django框架環(huán)境并建立和運行第一個App的教程

    搭建Python的Django框架環(huán)境并建立和運行第一個App的教程

    時至今日Django仍然是人氣最高的Web開發(fā)框架,MVC結(jié)構(gòu)清晰內(nèi)置功能強大,這里我們就來共同學習搭建Python的Django框架環(huán)境并建立和運行第一個App的教程
    2016-07-07
  • Python中死鎖的形成示例及死鎖情況的防止

    Python中死鎖的形成示例及死鎖情況的防止

    由于Python中允許創(chuàng)建多個線程,那么互斥鎖或者線程同時獲取多個鎖的情況就有可能發(fā)生,這里我們就來看一下Python中死鎖的形成示例及死鎖情況的防止:
    2016-06-06
  • python 爬蟲出現(xiàn)403禁止訪問錯誤詳解

    python 爬蟲出現(xiàn)403禁止訪問錯誤詳解

    這篇文章主要介紹了 python 爬蟲解決403禁止訪問錯誤的相關資料,需要的朋友可以參考下
    2017-03-03
  • python scrapy腳本報錯問題及解決

    python scrapy腳本報錯問題及解決

    這篇文章主要介紹了python scrapy腳本報錯問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python入門之模塊與包

    Python入門之模塊與包

    這篇文章主要為大家介紹了Python的模塊與包,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • pygame實現(xiàn)簡易飛機大戰(zhàn)

    pygame實現(xiàn)簡易飛機大戰(zhàn)

    這篇文章主要為大家詳細介紹了pygame實現(xiàn)簡易飛機大戰(zhàn),python版飛機大戰(zhàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 詳解Python 字符串相似性的幾種度量方法

    詳解Python 字符串相似性的幾種度量方法

    這篇文章主要介紹了詳解Python 字符串相似性的幾種度量方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • 詳解在python操作數(shù)據(jù)庫中游標的使用方法

    詳解在python操作數(shù)據(jù)庫中游標的使用方法

    這篇文章主要介紹了在python操作數(shù)據(jù)庫中游標的使用方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11

最新評論