首页 文章

如何在python中的感兴趣区域周围绘制一个矩形

提问于
浏览
29

我在我的python代码中遇到了 import cv 的问题 .

我的问题是我需要在图像中的感兴趣区域周围绘制一个矩形 . 怎么能在python中完成?我正在进行物体检测,并希望在我相信我在图像中找到的物体周围绘制一个矩形 .

2 回答

  • 79

    请不要尝试旧的cv模块,使用cv2:

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

    [编辑]追加以下后续问题:

    cv2.imwrite("my.png",img)
    
    cv2.imshow("lalala", img)
    k = cv2.waitKey(0) # 0==wait forever
    
  • 1

    你可以使用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.
    

    我有一个PIL Image对象,我想在这个图像上绘制矩形,但是PIL的ImageDraw.rectangle()方法无法指定线宽 . I need to convert Image object to opencv2's image format and draw rectangle and convert back to Image object . 我是这样做的:

    # 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)
    

相关问题