add sensitivity

This commit is contained in:
2025-07-07 11:43:16 +02:00
parent fb02929198
commit f323b356c7
+28 -2
View File
@@ -149,7 +149,8 @@ class MainWindow(QtWidgets.QMainWindow):
res = cv2.matchTemplate(screen_np, template, cv2.TM_CCOEFF_NORMED) res = cv2.matchTemplate(screen_np, template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
logger.debug(f"Detection for {img['name']}: max_val={max_val}") logger.debug(f"Detection for {img['name']}: max_val={max_val}")
if max_val > 0.9: sensitivity = img.get('sensitivity', 0.9)
if max_val > sensitivity:
detections[img['name']] = (max_loc, template.shape) detections[img['name']] = (max_loc, template.shape)
except Exception as e: except Exception as e:
logger.error(f"Error in image detection for {img['name']}: {e}") logger.error(f"Error in image detection for {img['name']}: {e}")
@@ -610,6 +611,14 @@ class StepDialog(QtWidgets.QDialog):
self.img_list.currentItemChanged.connect(self.update_image_preview) self.img_list.currentItemChanged.connect(self.update_image_preview)
for img in self.images: for img in self.images:
self.img_list.addItem(img.get('name', 'img')) self.img_list.addItem(img.get('name', 'img'))
self.sensitivity_spin = QtWidgets.QDoubleSpinBox()
self.sensitivity_spin.setRange(0.5, 1.0)
self.sensitivity_spin.setSingleStep(0.01)
self.sensitivity_spin.setDecimals(2)
self.sensitivity_spin.setValue(0.9)
self.sensitivity_spin.setToolTip('Sensitivity for selected image (higher = stricter match)')
self.img_list.currentRowChanged.connect(self.update_sensitivity_spin)
self.sensitivity_spin.valueChanged.connect(self.save_sensitivity_for_image)
self.btn_add_img = QtWidgets.QPushButton('Add Image') self.btn_add_img = QtWidgets.QPushButton('Add Image')
self.btn_add_img.clicked.connect(self.add_image_to_step) self.btn_add_img.clicked.connect(self.add_image_to_step)
self.btn_del_img = QtWidgets.QPushButton('Delete Image') self.btn_del_img = QtWidgets.QPushButton('Delete Image')
@@ -643,6 +652,8 @@ class StepDialog(QtWidgets.QDialog):
img_layout = QtWidgets.QHBoxLayout() img_layout = QtWidgets.QHBoxLayout()
img_list_layout = QtWidgets.QVBoxLayout() img_list_layout = QtWidgets.QVBoxLayout()
img_list_layout.addWidget(self.img_list) img_list_layout.addWidget(self.img_list)
img_list_layout.addWidget(QtWidgets.QLabel('Sensitivity:'))
img_list_layout.addWidget(self.sensitivity_spin)
img_list_layout.addWidget(self.btn_add_img) img_list_layout.addWidget(self.btn_add_img)
img_list_layout.addWidget(self.btn_del_img) img_list_layout.addWidget(self.btn_del_img)
img_list_layout.addWidget(self.btn_rename_img) img_list_layout.addWidget(self.btn_rename_img)
@@ -780,7 +791,7 @@ class StepDialog(QtWidgets.QDialog):
if cropped_pixmap.save(path, "PNG"): if cropped_pixmap.save(path, "PNG"):
logger.info(f"Screenshot saved to {path}") logger.info(f"Screenshot saved to {path}")
img_obj = {'path': path, 'region': [rect.x(), rect.y(), rect.width(), rect.height()], 'name': name} img_obj = {'path': path, 'region': [rect.x(), rect.y(), rect.width(), rect.height()], 'name': name, 'sensitivity': 0.9}
self.images.append(img_obj) self.images.append(img_obj)
self.img_list.addItem(name) self.img_list.addItem(name)
else: else:
@@ -796,6 +807,21 @@ class StepDialog(QtWidgets.QDialog):
else: else:
self.img_preview.setText('Image Preview') self.img_preview.setText('Image Preview')
def update_sensitivity_spin(self, idx):
if idx < 0 or idx >= len(self.images):
self.sensitivity_spin.setValue(0.9)
self.sensitivity_spin.setEnabled(False)
return
self.sensitivity_spin.setEnabled(True)
img = self.images[idx]
self.sensitivity_spin.setValue(img.get('sensitivity', 0.9))
def save_sensitivity_for_image(self, value):
idx = self.img_list.currentRow()
if idx < 0 or idx >= len(self.images):
return
self.images[idx]['sensitivity'] = value
def delete_image(self): def delete_image(self):
idx = self.img_list.currentRow() idx = self.img_list.currentRow()
if idx >= 0: if idx >= 0: