P 1 4 學習使用PIL在螢幕中尋找顏色

2021-08-14 11:06:07 字數 1534 閱讀 4814

pil:python imaging library,已經是python平台事實上的影象處理標準庫了。pil功能非常強大,但api卻非常簡單易用。

pillow : 是pil的乙個派生分支,但如今已經發展成為比pil本身更具活力的影象處理庫。

**如下

from pil import imagegrab #imagegrab不是attribute而是另乙個attribute的目錄所以必須from pil載入否則無法使用。pil.imagegrab.grab()命令也不正確因為使用命令時'.'後只能是attribute

s_found=0

x,y=-1,-1

#輸出-1意味著沒找到

im = imagegrab.grab((0,0,1920,1080))#與座標不同,這裡0,0,1,1是乙個畫素,而座標是從0~1919的

pix = im.load()

width = im.size[0]

height = im.size[1]

for x in range(0,width,1):

if s_found == 1:

break

#跳出這個迴圈(因為找到了符合的畫素) p.s. continue則是跳出此次迴圈,(如第三次迴圈)

for y in range(0,height,1):

#這是兩個迴圈語句的復合,用for+range實現了遍歷,也可以寫成 for x in range(width) 但如此不可改變步長

#也可以從中心找找到就不找了#可以改變步長#可以用希爾伯特曲線之類的遍歷方式來更有效地分析影象

r, g, b = pix[x, y]#用im.load[x,y]函式輸出點的顏色(用pix代替了)

if (r,g,b)==(225,225,225):

x=xy=y#若需繼續執行遍歷則需暫存一下座標

s_found=1

break

#跳出這個迴圈(因為找到了符合的畫素)

print(x,y)

使用pil截圖時發現python認為我的螢幕解析度是15xx,***,與1.3.1中檢查滑鼠座標時一致,這件事導致我不能截到整個螢幕,通過改變螢幕解析度我發現這個問題源於windows display settings中的這個選項:

將選項選為100%然後就解決問題了,雖然這樣做有點其實治標不治本,anyway

range函式的用法:

來自網路

此圖來自早期的python,python3.6輸入range(5)返回range(5),但功能是一致的,range(5)是迭代器,不是元組,不是列表。

接下來,嘗試用p-1.3.1與p-1.4中實現的功能實現ow自動尋找血條並瞄準

(P14)建構函式與析構函式 拷貝建構函式

include test.h intmain void ifndef test h define test h class test endif test h 14cpp 14cpp 14cpp test.cpp include test.h include using namespace std ...

如何使用WSL2在Windows上執行Podman

想在windows 10上執行podman嗎?您可以,感謝最新的windows子系統linux wsl 2.0實現。借助最新的 windows 子系統 for linux wsl 2.0 實現,podman 現在可以開箱即用。對配置檔案的微小更改使 podman 更易於使用。在接下來的部分中,我將記...

Powershell學習筆記二 開始使用PS

啟動windows powershell 安裝完powershell之後,開始選單裡可以啟動,也可以在執行中或在cmd中直接輸入powershell。如果想檢視執行powershell的選項,可以輸入powershell 使用windows powershell 獲取幫助 大家知道,當我們面臨乙個新...