最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

想要的效果

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

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

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

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

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

Pillow——圖像處理

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

  • 該庫包含基本的圖像處理功能,包括點操作、使用一組內(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é)

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

相關(guān)文章

  • Django實現(xiàn)任意文件上傳(最簡單的方法)

    Django實現(xiàn)任意文件上傳(最簡單的方法)

    這篇文章主要介紹了Django實現(xiàn)任意文件上傳,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • pandas溫差查詢案例的實現(xiàn)

    pandas溫差查詢案例的實現(xiàn)

    本文主要介紹了pandas溫差查詢案例的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • python3+PyQt5 自定義窗口部件--使用窗口部件樣式表的方法

    python3+PyQt5 自定義窗口部件--使用窗口部件樣式表的方法

    今天小編就為大家分享一篇python3+PyQt5 自定義窗口部件--使用窗口部件樣式表的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python循環(huán)實現(xiàn)n的全排列功能

    Python循環(huán)實現(xiàn)n的全排列功能

    這篇文章主要介紹了Python循環(huán)實現(xiàn)n的全排列功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • TensorFlow2.X結(jié)合OpenCV 實現(xiàn)手勢識別功能

    TensorFlow2.X結(jié)合OpenCV 實現(xiàn)手勢識別功能

    這篇文章主要介紹了TensorFlow2.X結(jié)合OpenCV 實現(xiàn)手勢識別功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • python3 小數(shù)位的四舍五入(用兩種方法解決round 遇5不進)

    python3 小數(shù)位的四舍五入(用兩種方法解決round 遇5不進)

    這篇文章主要介紹了python3 小數(shù)位的四舍五入(用兩種方法解決round 遇5不進),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 讓Python代碼運行更快的9個小技巧

    讓Python代碼運行更快的9個小技巧

    我們經(jīng)常聽到 “Python 太慢了”,“Python 性能不行”這樣的觀點,但是,只要掌握一些編程技巧,就能大幅提升 Python 的運行速度,今天就讓我們一起來看下讓 Python 性能更高的 9 個小技巧,需要的朋友可以參考下
    2024-01-01
  • pandas的Series類型與基本操作詳解

    pandas的Series類型與基本操作詳解

    這篇文章主要介紹了pandas的Series類型與基本操作詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Python While循環(huán)語句實例演示及原理解析

    Python While循環(huán)語句實例演示及原理解析

    這篇文章主要介紹了Python While循環(huán)語句實例演示及原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • python 打印直角三角形,等邊三角形,菱形,正方形的代碼

    python 打印直角三角形,等邊三角形,菱形,正方形的代碼

    這篇文章主要介紹了python 打印直角三角形,等邊三角形,菱形,正方形的代碼,需要的朋友可以參考下
    2017-11-11

最新評論

德令哈市| 铜鼓县| 大名县| 玛纳斯县| 莲花县| 胶州市| 许昌县| 若羌县| 丽水市| 杭州市| 西城区| 额敏县| 如东县| 房山区| 游戏| 九江县| 新沂市| 静海县| 汕头市| 灵川县| 康乐县| 丁青县| 望江县| 亚东县| 陆良县| 苍山县| 柘荣县| 盐池县| 墨玉县| 剑河县| 尚志市| 科尔| 区。| 漳平市| 疏勒县| 彭山县| 清原| 龙川县| 安徽省| 建湖县| 耒阳市|