controle da ordem dos bicos
This commit is contained in:
parent
809c0412e3
commit
d54ea58914
|
|
@ -126,6 +126,7 @@ WEED_DEFAULT_CONFIG = {
|
|||
# ============================================================
|
||||
# Gate global: só libera bicos quando existe alvo suficiente no frame.
|
||||
"usar_radar_global_gate": True,
|
||||
"inverter_ordem_bicos": True,
|
||||
|
||||
# Histerese global da fração de alvo no frame completo.
|
||||
"min_frac_erva_global_on": 0.0020,
|
||||
|
|
|
|||
|
|
@ -58,6 +58,8 @@ class WeedDetector:
|
|||
if self.qtd_bicos <= 0:
|
||||
self.qtd_bicos = 7
|
||||
|
||||
self.inverter_ordem_bicos = bool(self.config.get("inverter_ordem_bicos", False))
|
||||
|
||||
self.detector_debug_perf = bool(
|
||||
self.config.get("detector_debug_perf", False)
|
||||
)
|
||||
|
|
@ -125,12 +127,25 @@ class WeedDetector:
|
|||
novo_qtd_bicos = int(
|
||||
self.config.get("qtd_bicos", self.qtd_bicos) or self.qtd_bicos
|
||||
)
|
||||
novo_inverter_ordem_bicos = bool(
|
||||
self.config.get(
|
||||
"inverter_ordem_bicos",
|
||||
self.inverter_ordem_bicos,
|
||||
)
|
||||
)
|
||||
|
||||
if novo_qtd_bicos <= 0:
|
||||
novo_qtd_bicos = 7
|
||||
|
||||
if novo_qtd_bicos != self.qtd_bicos:
|
||||
self.qtd_bicos = novo_qtd_bicos
|
||||
mudou_mapeamento = (
|
||||
novo_qtd_bicos != self.qtd_bicos
|
||||
or novo_inverter_ordem_bicos != self.inverter_ordem_bicos
|
||||
)
|
||||
|
||||
self.qtd_bicos = novo_qtd_bicos
|
||||
self.inverter_ordem_bicos = novo_inverter_ordem_bicos
|
||||
|
||||
if mudou_mapeamento:
|
||||
self._inicializar_estado()
|
||||
|
||||
self.detector_debug_perf = bool(
|
||||
|
|
@ -343,6 +358,14 @@ class WeedDetector:
|
|||
larguras = np.diff(edges).astype(np.int32)
|
||||
area_por_bico = alturas * larguras
|
||||
|
||||
# A segmentação é calculada naturalmente da esquerda para a direita.
|
||||
# Quando habilitado, inverte a associação entre região da imagem
|
||||
# e numeração física dos bicos.
|
||||
if self.inverter_ordem_bicos:
|
||||
px_target_por_bico = px_target_por_bico[::-1].copy()
|
||||
larguras = larguras[::-1].copy()
|
||||
area_por_bico = area_por_bico[::-1].copy()
|
||||
|
||||
with np.errstate(divide="ignore", invalid="ignore"):
|
||||
frac_target_por_bico = np.where(
|
||||
area_por_bico > 0,
|
||||
|
|
@ -361,6 +384,7 @@ class WeedDetector:
|
|||
# Semântica atual: fração de target/alvo pulverizável.
|
||||
"frac_erva_por_bico": frac_target_por_bico,
|
||||
"ema_frac_por_bico": self._ema_frac_bico.copy(),
|
||||
"ordem_bicos_invertida": bool(self.inverter_ordem_bicos),
|
||||
"faixa": {
|
||||
"y_top": int(y_top),
|
||||
"y_bot": int(y_bot),
|
||||
|
|
|
|||
Loading…
Reference in New Issue