cv.rectangle显示在错误的位置

时间:2019-02-26 03:13:11

标签: python opencv multidimensional-array

我正在使用violaJones进行面部特征分割,但是突然我在索引或cv.rectangle特征方面遇到问题。 以下代码只是一个简化示例,用于显示与我的代码中出现的问题相同的问题

import cv2 as cv

img = cv.imread('/Users/david/Desktop/Grimmanet/Images/neutral.jpg')
roi_color = img[212:212+544, 183:183+544]

cv.rectangle(roi_color, (315,132),(108,38), (255, 255, 255), 2)

cv.imshow('img',roi_color)
cv.waitKey(0)
cv.destroyAllWindows()

roi_color是img中包含面部的部分,然后我计算出(315,132,108,38)(x,y,w,h)给出的矩形应该是眉毛的一部分。但是,放映时的位置与给定的位置完全不同。

矩形未定位在指定点(315,132)。

即使在这种简单的工作流程中仍然出现,我也不知道到底是什么问题。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

根据rectangle的文档,该函数的签名为

  

cv2.rectangle(img,pt1,pt2,color [,thickness [,lineType [,shift]]])

其中pt1是矩形的一个角(通常是左上角),pt2是矩形的对角角。

因此,要正确选择形状,您需要

width = 108
height = 38
pt1 = (315, 132)
pt2 = (pt1[0] + width, pt1[1] + height)
cv.rectangle(roi_color, pt1, pt2, (0, 0, 255), 2)

结果是

result

所以发生的事是(108,38),它是矩形的宽度和高度,被认为是对角线跨(315, 132)的矩形的第二个顶点。这意味着该函数将矩形从右下角(315, 132)绘制到左上角(108, 38)