lua觸動精靈rgb轉hsv函式方法

2021-10-03 01:46:57 字數 1909 閱讀 7134

hsv識別適用於背景色與目標色單一且反差大的場景,例如這樣的:

紅色戰力和綠色戰力,我們的目的是挑戰綠色低戰力的,用找色很麻煩,因為他們是數字一直是變化的,無法用找色實現,而用hsv就可以輕鬆實現,具體hsv資料可以自己搜尋,觸動精靈目前沒有hsv相關函式,我分享乙個自己原創的。

--rgb轉hsv,返回h,s,v三個值

function rgb2hsv(r,g,b)

-- 找出r,g,b最小值和最大值

local min = math.min(r,g,b)

local max = math.max(r,g,b)

local diff = max - min

local h,s,v = 0,0,0

v = max

if max == 0 then

s = 0

else

s = diff

endif diff ~= 0 then

if r == max then

h = 60 * (g - b) / diff

elseif g == max then

h = 60 * (b - r) / diff + 120

else

h = 60 * (r - g) / diff + 240

endif h < 0 then

h = h + 360

endelse

h = -1

endlocal tmp = math.modf(h)

return tmp,s,v

end

基於上面的函式,又封裝了乙個函式,觸動精靈使用者直接可以拿來使用

-- 通過色相來模糊查詢區域指定顏色,返回座標,offset為偏移值,一般設定為5就可以

-- 此函式適用於顏色反差較大區域

function findhsvinregionfuzzy(color, offset, x0, y0, x1, y1)

local width = math.abs(x1-x0) or 0

local height = math.abs(y1-y0) or 0

if(width==0) or (height==0) or (offset<0) then

return -1, -1

endlocal num = string.format("%06x",color)

local r = tonumber(string.sub(num,1,2),16)

local g = tonumber(string.sub(num,3,4),16)

local b = tonumber(string.sub(num,5,6),16)

local h= rgb2hsv(r,g,b)

local x,y =-1,-1

local rx,ry=-1,-1

-- 快取,效率提高50倍 :)

keepscreen(true)

for i= 0, height do

y = y0 + i

for j =0, width do

x = x0 + j

local r1,g1,b1 = getcolorrgb(x,y)

local h1 = rgb2hsv(r1,g1,b1)

if math.abs(h1-h) < offset then

rx = x

ry = y

goto endfor

endend

end::endfor::

keepscreen(false)

return rx,ry

end

觸動精靈 觸動精靈指令碼編輯器

觸動精靈 ide 指令碼編輯器使用手冊 小注意 可能的話 不要放到中文目錄下 省事 accesskey 小知識 註冊賬號成功 個人資訊下查到 小知識 乙個accesskey能連線多個裝置 但是 有數量上限一旦出現提示達到上限 新建工程 連線裝置廣播開關 usb 模擬器 小知識 如何檢視當前裝置的各種...

觸動精靈學習筆記(一)

學了c 有段時間了,很喜歡程式設計,可是,由於工作和時間關係 都是藉口 都很少的能夠深入的學習進去,這幾天又玩遊戲,放了3年的觸動精靈又撿起來了,發現,自從學完c 後,思路清晰明了了不少,今天看到了lua語言的表,突然發現,這個和物件導向有異曲同工之妙,而物件導向,能夠大大減小開發的工作量,還有封裝...

觸動精靈 零基礎小白學觸動 取色器的使用 補

取色器的使用 詳細的手冊 快捷鍵使用前提 啟用當前的那個圖片 如果是當前視窗時取色器或者其他的視窗 快捷鍵是無效的 以按鍵抓抓的常見操作 來分類下 看看觸動的塗色工具的使用 注 所有的截圖快捷鍵操作的前提是 當前視窗是取色器或者取色面板 並且輸入法是英文狀態 這些快捷鍵才能起作用 注意快捷操作時候的...