web-dev-qa-db-fra.com

Comment dessiner un rectangle autour d'une région d'intérêt en python

J'ai des problèmes avec import cv dans mon code python.

Mon problème est que je dois dessiner un rectangle autour des régions d’intérêt dans une image ..___ Comment cela peut-il être fait en python? Je suis en train de détecter des objets et j'aimerais dessiner un rectangle autour des objets que je crois avoir trouvés dans l'image.

24
user961627

veuillez ne pas essayer avec l'ancien module cv, utilisez cv2:

import cv2

cv2.rectangle(img, (x1, y1), (x2, y2), (255,0,0), 2)


x1,y1 ------
|          |
|          |
|          |
--------x2,y2

[edit] pour ajouter les questions suivantes:

cv2.imwrite("my.png",img)

cv2.imshow("lalala", img)
k = cv2.waitKey(0) # 0==wait forever
71
berak

Vous pouvez utiliser cv2.rectangle() :

cv2.rectangle(img, pt1, pt2, color, thickness, lineType, shift)

Draws a simple, thick, or filled up-right rectangle.

The function rectangle draws a rectangle outline or a filled rectangle
whose two opposite corners are pt1 and pt2.

Parameters
    img   Image.
    pt1   Vertex of the rectangle.
    pt2    Vertex of the rectangle opposite to pt1 .
    color Rectangle color or brightness (grayscale image).
    thickness  Thickness of lines that make up the rectangle. Negative values,
    like CV_FILLED , mean that the function has to draw a filled rectangle.
    lineType  Type of the line. See the line description.
    shift   Number of fractional bits in the point coordinates.

J'ai un objet Image PIL et je veux dessiner un rectangle sur cette image, mais la méthode ImageDraw.rectangle () de PIL ne permet pas de spécifier la largeur de trait .Je dois convertir l'objet Image en Le format d'image opencv2, dessinez un rectangle et reconvertissez-le en objet Image. Voici comment je le fais:

# im is a PIL Image object
im_arr = np.asarray(im)
# convert rgb array to opencv's bgr format
im_arr_bgr = cv2.cvtColor(im_arr, cv2.COLOR_RGB2BGR)
# pts1 and pts2 are the upper left and bottom right coordinates of the rectangle
cv2.rectangle(im_arr_bgr, pts1, pts2),
              color=(0, 255, 0), thickness=3)
im_arr = cv2.cvtColor(im_arr_bgr, cv2.COLOR_BGR2RGB)
# convert back to Image object
im = Image.fromarray(im_arr)
0
jdhao