From 02a397c749e4eac7528b92400b23dbf8db9cc74b Mon Sep 17 00:00:00 2001 From: zzyyyl Date: Fri, 26 Jul 2024 01:32:13 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20GenerateMaskRange=20=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E5=B1=95=E7=A4=BA=20mask=5Frange=20=E6=8E=A9?= =?UTF-8?q?=E7=A0=81=E5=90=8E=E7=9A=84=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/GenerateMaskRange/generate_mask_range.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tools/GenerateMaskRange/generate_mask_range.py b/tools/GenerateMaskRange/generate_mask_range.py index e94db1e9ba..ab8e717994 100644 --- a/tools/GenerateMaskRange/generate_mask_range.py +++ b/tools/GenerateMaskRange/generate_mask_range.py @@ -77,11 +77,24 @@ def show_image_mask(image, mask, image_for_hist): plt.tight_layout() plt.show() +def calc_mask_from_ranges(image, mask_ranges): + mask = None + for mask_range in mask_ranges: + l0, l1, l2 = mask_range[0] + u0, u1, u2 = mask_range[1] + if mask is not None: + mask = cv2.bitwise_or(mask, cv2.inRange(image, (l0, l1, l2), (u0, u1, u2))) + else: + mask = cv2.inRange(image, (l0, l1, l2), (u0, u1, u2)) + return mask + if __name__ == '__main__': - image = cv2.imread(maa_dir / "resource" / "template" / "Sarkaz@Roguelike@StageCombatDpsEnter.png") + image = cv2.imread(maa_dir / "resource" / "template" / "Sarkaz@Roguelike@StageFilterTruthEnter.png") hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) rgb_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) + show_image_mask(image, calc_mask_from_ranges(hsv_image, [[[23, 150, 40], [23, 230, 150]]]), hsv_image) + # 自定义参数 hsv_base_mask = None # hsv_base_mask = cv2.inRange(hsv_image, (0, 0, 0), (180, 254, 230)) # 忽略亮色背景