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

python在屏幕上點(diǎn)擊特定按鈕或圖像效果實(shí)例

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

想要的效果

大概就是搞個(gè)windows桌面自動(dòng)點(diǎn)擊程序,以新浪微博自動(dòng)點(diǎn)贊為例。

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

PyAutoGUI——圖形用戶界面自動(dòng)化(主要用到這個(gè))

PyAutoGUI是Python功能強(qiáng)大的UI自動(dòng)化庫(kù),其目的是可以用程序自動(dòng)控制鼠標(biāo)和鍵盤操作,主要用來(lái)實(shí)現(xiàn)PC端的UI自動(dòng)化。

  • 有鼠標(biāo)控制、鍵盤操作、屏幕截圖、圖片定位、消息對(duì)話框、窗口操作等功能;
  • 有倒計(jì)時(shí)、鼠標(biāo)坐標(biāo)顏色抓取小程序、UI自動(dòng)化迷你語(yǔ)言等實(shí)用工具;
  • 有故障安全、通用暫停等機(jī)制。 

Pillow——圖像處理

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

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

OpenCV——是開(kāi)源的計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)庫(kù)(不太了解,問(wèn)題不大)

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

前面的看不看都一樣進(jìn)入正題

例如實(shí)現(xiàn)功能,打開(kāi)新浪微博首頁(yè),我們要識(shí)別圖中的的贊,并點(diǎn)擊。

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

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

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

截圖效果:

ps:自己手動(dòng)截圖也一樣,還有最重要每當(dāng)初次運(yùn)行時(shí)要確保圖像不出錯(cuò)還是重新用程序截一個(gè)圖靠譜。

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

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

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

代碼輸出如下:

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

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

方案介紹

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

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

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

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

 1.模糊定位

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

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

2.灰度匹配

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

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

3.指定范圍

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

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

4.多圖定位

可以對(duì)一個(gè)圖標(biāo)截多張不同的圖,每一張圖都代表這個(gè)圖標(biāo),只要定位其中一張圖就能定位這個(gè)圖標(biāo)。對(duì)locateOnScreent()函數(shù)進(jìn)行二次封裝,多張圖片之間用 ' | ' 間隔,實(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,沒(méi)找到就跳過(guò)
def assertPIC(args):
    if locateOnScreen(args) == None:
        pass
    else:
        return True
 
#循環(huán)找圖,找到就返回圖像中心點(diǎn),沒(méi)找到就打印'沒(méi)找到'
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('沒(méi)找到')
 
#測(cè)試
print(img_locat('test1.png|test2.png'))

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

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

補(bǔ)充:Python實(shí)現(xiàn)鼠標(biāo)自動(dòng)控制到屏幕指定位置,并點(diǎn)擊

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

代碼解釋:

0, 0是鼠標(biāo)需要移動(dòng)到的位置,這邊是屏幕左上角的位置坐標(biāo)

duration=1是將鼠標(biāo)移動(dòng)到指定坐標(biāo)的間隔時(shí)間,這邊是1秒

pyautogui.click()是點(diǎn)擊

注:

屏幕的位置坐標(biāo)點(diǎn)可以通過(guò)微信截圖看到坐標(biāo)

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    讓Python代碼運(yùn)行更快的9個(gè)小技巧

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

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

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

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

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

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

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

最新評(píng)論

清苑县| 仁化县| 贵溪市| 宣化县| 剑河县| 乳山市| 呼图壁县| 东兴市| 郸城县| 安福县| 正蓝旗| 红桥区| 绥化市| 山东| 仙居县| 罗江县| 夏河县| 安国市| 建平县| 京山县| 岗巴县| 饶阳县| 舟曲县| 黑龙江省| 马鞍山市| 台山市| 肇东市| 白河县| 大余县| 陈巴尔虎旗| 瑞昌市| 新巴尔虎左旗| 商南县| 三亚市| 公安县| 临沧市| 延吉市| 河池市| 马公市| 耿马| 丽水市|