日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python2定点找色_Python实现按键精灵(二)-找图找色

發(fā)布時間:2025/3/15 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python2定点找色_Python实现按键精灵(二)-找图找色 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、實現(xiàn)功能

判斷在指定坐標范圍內(nèi),是否存在相似度大于n的圖片,并返回坐標。

二、基本思路

A=你需要尋找的圖片

B=截取當前頁面中指定范圍的圖片

利用opencv 判斷A在B中的位置,

在該位置截取與A圖同大小的圖片C

對比圖片C與圖片A的相似度

三、實現(xiàn)的代碼段

1、安裝所需要的庫

pip install opencv-python

pip install pywin32

2、截取指定坐標的圖片

參數(shù)說明

filename:保存的文件名

hwnd:窗口句柄 請想辦法獲取

pos:坐標位置 [x1,y1,x2,y2]。x1,y1 是左上角坐標、x2,y2 指右下角坐標。

該功能可以返回不在最頂層程序的截圖。

def window_capture(filename,hwnd=0,pos=None):

hwnd= hwnd #窗口的編號,0號表示當前活躍窗口

#根據(jù)窗口句柄獲取窗口的設(shè)備上下文DC(Divice Context)

hwndDC =win32gui.GetWindowDC(hwnd)#根據(jù)窗口的DC獲取mfcDC

mfcDC =win32ui.CreateDCFromHandle(hwndDC)#mfcDC創(chuàng)建可兼容的DC

saveDC =mfcDC.CreateCompatibleDC()#創(chuàng)建bigmap準備保存圖片

saveBitMap =win32ui.CreateBitmap()#獲取監(jiān)控器信息

MoniterDev =win32api.EnumDisplayMonitors(None, None)if pos==None:

x1=0

y1=0

w= MoniterDev[0][2][2]

h= MoniterDev[0][2][3]else:

x1=pos[0]

y1=pos[1]

w=pos[2]-pos[0]

h=pos[3]-pos[1]#print w,h   #圖片大小

#為bitmap開辟空間

saveBitMap.CreateCompatibleBitmap(mfcDC, MoniterDev[0][2][2], MoniterDev[0][2][3])#高度saveDC,將截圖保存到saveBitmap中

saveDC.SelectObject(saveBitMap)#截取從左上角(0,0)長寬為(w,h)的圖片

saveDC.BitBlt((x1, y1), (w, h), mfcDC, (x1, y1), win32con.SRCCOPY)

saveBitMap.SaveBitmapFile(saveDC, filename)

#清楚圖片數(shù)據(jù),防止內(nèi)存泄露win32gui.DeleteObject(saveBitMap.GetHandle())

saveDC.DeleteDC()

3、利用opencv 判斷A在B中的位置

參數(shù)說明

target:cv2.imread(“圖片B”)

template:cv2.imread(“圖片A”)

deffind_picture(target,template):#獲得模板圖片的高寬尺寸

theight, twidth = template.shape[:2]#執(zhí)行模板匹配,采用的匹配方式cv2.TM_SQDIFF_NORMED

result =cv2.matchTemplate(target,template,cv2.TM_SQDIFF_NORMED)#歸一化處理

cv2.normalize( result, result, 0, 1, cv2.NORM_MINMAX, -1)#尋找矩陣(一維數(shù)組當做向量,用Mat定義)中的最大值和最小值的匹配結(jié)果及其位置

min_val, max_val, min_loc, max_loc =cv2.minMaxLoc(result)#匹配值轉(zhuǎn)換為字符串

#對于cv2.TM_SQDIFF及cv2.TM_SQDIFF_NORMED方法min_val越趨近與0匹配度越好,匹配位置取min_loc

#對于其他方法max_val越趨近于1匹配度越好,匹配位置取max_loc

strmin_val =str(min_val)#繪制矩形邊框,將匹配區(qū)域標注出來

#min_loc:矩形定點

#(min_loc[0]+twidth,min_loc[1]+theight):矩形的寬高

#(0,0,225):矩形的邊框顏色;2:矩形邊框?qū)挾?/p>

cv2.rectangle(target,min_loc,(min_loc[0]+twidth,min_loc[1]+theight),(0,0,225),2)#顯示結(jié)果,并將匹配值顯示在標題欄上

#cv2.imshow("MatchResult----MatchingValue="+strmin_val,target)

#cv2.waitKey()

#cv2.destroyAllWindows()

x=min_loc[0]

y=min_loc[1]return X,Y

4、返回指定圖片的指定位置指定坐標

#target原始圖片#x,y 起始坐標#w,h 返回的寬長

defget_pic_from_pic(x,y,w,h,target):

region= target[y:y+h,x:x+w]

retrun region

5、比較兩個圖片的相似度

defcompare_picture( imageA, imageB):#灰度圖片比較

grayA =cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY)

grayB=cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)

(score, diff)= compare_ssim(grayA, grayB, full=True)return float(score)

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的python2定点找色_Python实现按键精灵(二)-找图找色的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。