web-dev-qa-db-fra.com

Comment copier une région d'image en utilisant opencv en python?

J'essaie d'implémenter un logiciel de reconnaissance de plaque d'immatriculation en utilisant les idées de http://iamabhik.wordpress.com/category/opencv/ .

J'ai implémenté l'emplacement de la plaque en utilisant opencv en python, en utilisant "import cv2". Cela fonctionne bien et maintenant je dois copier la région de la plaque sur une autre image pour faire la segmentation des caractères, puis la partie OCR (peut-être en utilisant un réseau de neurones).

J'ai trouvé la fonction GetSubRect () pour copier ou isoler une partie de l'image mais elle ne semble pas être disponible en python. Y a-t-il une alternative? Les fonctions ROI ne semblent pas non plus implémentées.

Existe-t-il une documentation à jour de l'interface python vers opencv?

J'ai compilé opencv depuis le dépôt svn (révision 7239) sur un environnement Debian wheezy/sid.

N'hésitez pas à suggérer des méthodes/idées alternatives pour résoudre ce problème.

Merci d'avance.

19
curumim

Les fonctions cv.GetSubRect et ROI sont disponibles en Python, mais en ancien mode import cv Ou import cv2.cv. c'est-à-dire, utilisez cv2.cv.GetSubRect() ou cv2.cv.SetImageROI si vous les connaissez.

D'un autre côté, il est simple de définir un retour sur investissement sans ces fonctions en raison de l'intégration numpy dans le nouveau cv2.

Si (x1, y1) et (x2, y2) sont les deux sommets opposés de la plaque que vous avez obtenus, utilisez simplement la fonction:

roi = gray[y1:y2, x1:x2]

c'est votre ROI d'image.

Alors, choisissez ce qui vous convient.

51
Abid Rahman K

Exemple: si vous avez peu de points et que vous souhaitez copier la région contient son

r = cv2.boundingRect(pts)
cv2.imwrite('roi.png', im[r[0]:r[0]+r[2], r[1]:r[1]+r[3]])
5
Xeningem