use*_*627 45 python opencv draw computer-vision
我import cv
在我的python代码中遇到了麻烦.
我的问题是我需要在图像中的感兴趣区域周围绘制一个矩形.怎么能在python中完成?我正在进行物体检测,并希望在我相信我在图像中找到的物体周围绘制一个矩形.
ber*_*rak 119
请不要尝试旧的cv模块,使用cv2:
import cv2
cv2.rectangle(img, (x1, y1), (x2, y2), (255,0,0), 2)
x1,y1 ------
| |
| |
| |
--------x2,y2
Run Code Online (Sandbox Code Playgroud)
[编辑]追加以下后续问题:
cv2.imwrite("my.png",img)
cv2.imshow("lalala", img)
k = cv2.waitKey(0) # 0==wait forever
Run Code Online (Sandbox Code Playgroud)
jdh*_*hao 13
您可以使用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.
Run Code Online (Sandbox Code Playgroud)
我有一个 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)
Run Code Online (Sandbox Code Playgroud)
Yan*_*Liu 12
正如其他答案所说,您需要的函数是cv2.rectangle()
,但请记住,如果边界框顶点的坐标在元组中,则它们的坐标必须是整数,并且它们需要按(left, top)
和的顺序排列(right, bottom)
。或者,等价地,(xmin, ymin)
和(xmax, ymax)
。