Comment extraire une zone de retour sur investissement irrégulière dans OpenCV, hand_eye_calibration

  1. Opencv extrait la zone ROI:
    avant de faire cela, voyons d'abord quel masque est utilisé dans le traitement d'image. Le masque est défini dans OpenCV comme suit: un objet Mat monocanal de huit bits, et chaque pixel a une valeur de zéro ou non Zone zéro. Lorsque l'objet Masque est ajouté à la zone d'image, seule la zone non nulle est visible et toutes les valeurs de pixels du masque qui chevauchent l'image sont invisibles. C'est-à-dire que la forme et la taille de la La zone de masque détermine directement ce que vous voyez. La taille et la forme de l'image finale. Un exemple spécifique est le suivant: On
    Insérez la description de l'image ici
    peut voir que le rôle du masque est de nous aider à extraire diverses zones irrégulières. Pour effectuer les étapes ci-dessus dans OpenCV, il vous suffit d'appeler simplement la fonction API bitwise_and.

Une autre question s'ensuit donc: Comment générer une telle zone de masque? La réponse est qu'il existe deux façons d'obtenir la zone de masque générée dans OpenCV.

Méthode 1: Cela
peut être fait en sélectionnant manuellement puis en remplissant avec des polygones. L'implémentation du code est la suivante:

import cv2 as cv
import numpy as np

src = cv.imread("D:/images/gc_test.png")
cv.imshow("input", src)
h, w, c = src.shape

# 手工绘制ROI区域
mask = np.zeros((h, w), dtype=np.uint8)
x_data = np.array([124, 169, 208, 285, 307, 260, 175])
y_data = np.array([205, 124, 135, 173, 216, 311, 309])
pts = np.vstack((x_data, y_data)).astype(np.int32).T
cv.fillPoly(mask, [pts], (255), 8, 0)
cv.imshow("mask", mask)

# 根据mask,提取ROI区域
result = cv.bitwise_and(src, src, mask=mask)
cv.imshow("result", result)
cv.waitKey(0)

L'effet de l'opération est le suivant:
Insérez la description de l'image ici
Deuxième méthode:

src = cv.imread("D:/images/gc_test.png")
cv.imshow("input", src)

# 生成mask区域
hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)
mask = cv.inRange(hsv, (156, 43, 46), (180, 255, 255))
cv.imshow("mask", mask)

# 提取ROI区域,根据mask
result = cv.bitwise_and(src, src, mask=mask)
cv.imshow("result", result)
cv.waitKey(0)

Insérez la description de l'image ici
Il est principalement divisé en trois étapes:

  • Extraire le retour sur investissement du contour
  • Générer la zone de masque
  • Extraire les contours spécifiés Il est
    particulièrement important de noter que -> Le masque peut être généré selon les contours, l'analyse binarisée des composants connectés, inRange et d'autres méthodes de traitement. Ici, la zone de masque est obtenue sur la base de la méthode inRange, puis extraite
  1. hand_eye_calibration:
    Référez - vous à l'adresse du projet:
    hand_eye_calibration
    (1): Opencv4 réalise un étalonnage œil-main et un test du système œil-main

Je suppose que tu aimes

Origine blog.csdn.net/yangdashi888/article/details/104145715
conseillé
Classement