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)
2 回答
请不要尝试旧的cv模块,使用cv2:
[编辑]追加以下后续问题:
你可以使用cv2.rectangle():
我有一个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 . 我是这样做的: