NumPy/OpenCV 2: comment faire pour recadrer non-rectangulaire région?
J'ai un ensemble de points qui font un forme (polyligne fermée). Maintenant, je veux faire un copier/culture tous les pixels de l'image à l'intérieur de cette forme, en laissant le reste en noir/transparent. Comment dois-je faire?
Par exemple, j'ai ceci:
et je veux obtenir ceci:
- Je crois que vous voulez travailler avec un irréguliers ROI (région d'intérêt). Vous pouvez commencer ici: stackoverflow.com/questions/10632195/...
- Juste au cas où: cette question n'est pas de dupliquer, appelle depuis un, décrit l'API en C et pas en Python (cette question est toujours utile, si).
Vous devez vous connecter pour publier un commentaire.
*édition - mise à jour pour fonctionner avec des images qui ont un canal alpha.
Cela a fonctionné pour moi:
Vous avez probablement juste de vouloir garder l'image et le masque séparé pour les fonctions qui acceptent les masques. Cependant, je crois que cela ne vous a demandé en particulier que:
cv2.fillConvexPoly
si votre forme est un polygone convexe. La documentation indique que cette méthode est "beaucoup plus rapide" quecv2.fillPoly
.cv2.fillConvexPoly
. Pour quelqu'un qui travaille avec de très grandes images, il serait vaut le coût de mettre en œuvre un convexe de test. Voir ce DONC, la question.Le code suivant devrait être utile pour recadrer les images et les mettre dans un fond blanc.
Image D'Entrée:
Image De Masque:
Résultante de l'image de sortie: