繁体   English   中英

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

[英]How to draw a rectangle around a region of interest in python

我在 python 代码中import cv时遇到问题。

我的问题是我需要在图像中感兴趣的区域周围绘制一个矩形。 这怎么能在python中完成? 我正在做对象检测并想围绕我相信我在图像中找到的对象绘制一个矩形。

请不要尝试使用旧的 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

您可以使用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 对象,我想在这个图像上绘制矩形。 我想使用 opencv2 并绘制矩形,然后转换回 PIL 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)

正如其他答案所说,您需要的函数是cv2.rectangle() ,但请记住,如果边界框顶点在元组中,则它们的坐标必须为整数,并且它们的顺序为(left, top)(right, bottom) 或者,等效地, (xmin, ymin)(xmax, ymax)

在图像上绘制矩形的代码是

cv2.rectangle(图像,pt1,pt2,颜色,厚度)

其中 pt1 是起点-->(x,y) pt2 是终点。 -->(x+w,y+h)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM