[英]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.