閱讀文章,大約需要5分鐘時間 總結
1,而分割線的位置rgb為(236,236,236)
但是,乙個螢幕的畫素點這麼多,(比如我螢幕有1920*1080=2073600個畫素點),這麼多畫素點難道要乙個乙個遍歷?
如何快速而準確地找到 (236,236,236) 的位置?
(完整**在末尾)
from pil import imagegrab
width, height =
1920
,1080
# 螢幕尺寸大小
img = imagegrab.grab((0
,0,width,height)
)# 擷取整個螢幕
imgdata = img.getdata(
)# 轉換成序列化資料
變數imgdata儲存著截圖的序列化資料,也就是說包含著每個畫素點的rgb值的大小。
先來看一下imgdata的長度:
2073600 剛好等於1920*1080,也就是包含了整個螢幕的畫素點 。
分別索引看一下第1、2、3個畫素點的值看一下是多少:
可以看出是用二維元組的資料型別儲存著每個畫素點的rgb值。
接下來便開始遍歷這個二維陣列:
spacing =
int(width /5)
# 兩條豎線之間的間距
for j in
range
(height)
:# 遍歷豎線上的畫素點
place = j*width + i*spacing # 第i列第j行在imgdata的位置
if imgdata[place]==(
236,
236,
236)
:# 找到(236,236,236)這個顏色值
if imgdata[place-width]==(
245,
245,
245)
and \
imgdata[place+width]in(
(245
,245
,245),
(255
,255
,255))
:# 判斷分割線上面乙個畫素點和下面乙個畫素點的rgb值是否符合,防止誤判
forlong
inrange(1
,21):
# 判斷分割線連續20個畫素點是否都為(236,236,236),防止誤判
以下貼出完整**:
from pil import imagegrab
import numpy as np
defanalysis_pixel()
: width, height =
1920
,1080
img = imagegrab.grab((0
,0,width,height)
) imgdata = img.getdata(
)# imgdatanp = np.array(imgdata).reshape((1920,1080,3)) # 轉換成三維陣列
spacing =
int(width /5)
# 兩條豎線之間的間距
for i in
range(6
):# 遍歷6條豎線
for j in
range
(height)
:# 遍歷豎線上的畫素點
place = j*width + i*spacing # 第i列第j行在imgdata的位置
try:
if imgdata[place]==(
236,
236,
236)
:# 找到(236,236,236)這個顏色值
if imgdata[place-width]==(
245,
245,
245)
and imgdata[place+width]in(
(245
,245
,245),
(255
,255
,255))
:# 判斷分割線上面乙個畫素點和下面乙個畫素點的rgb值是否符合,防止誤判
forlong
inrange(1
,21):
# 判斷分割線連續20個畫素點是否都為(236,236,236),防止誤判
if imgdata[place+
long]!=
(236
,236
,236):
break
else
:return place%width,
int(place/width)
except indexerror:
# 當遍歷到最後乙個點的時候會超出索引範圍
return
0return
0if __name__ ==
'__main__'
:print
(analysis_pixel(
))
python定時用微信傳送訊息
首先,我們需要準備python用到的第三方庫 pip install wxpy pip install requests 步驟如下 如此,我們在編輯器pycharm裡面第三方庫就載入好了。那麼實現的 如下 from future import unicode literals from thread...
微信公眾平台訊息介面開發(40)語音識別
語音識別公眾平台訊息介面 語音識別 開啟語音識別後的語音xml資料報如下 xml tousername touser tousername fromusername fromuser fromusername createtime 1357290913 createtime msgtype voic...
用Python實現微信定時傳送訊息
注意 該作者部落格已遷移至 所需模組 可用pip安裝 apscheduler 定時任務框架 官方文件 定時傳送群訊息 import itchat from apscheduler.schedulers.blocking import blockingscheduler defsend news 更新...