Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python cv.矩形显示在错误位置_Python_Opencv_Multidimensional Array - Fatal编程技术网

Python cv.矩形显示在错误位置

Python cv.矩形显示在错误位置,python,opencv,multidimensional-array,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), (

我正在使用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中包含人脸的部分,然后我计算出由(315132108,38)(x,y,w,h)给出的矩形应该是眉毛的部分。但相反,当表演处于与给定位置完全不同的位置时

矩形未定位在指定点(315132)。

我真的不知道问题可能是什么,即使在这个简单的工作流中,问题仍然存在


感谢您的帮助

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

cv2.矩形(img、pt1、pt2、颜色[、厚度[、线型[、偏移]])

其中,
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)
结果是


所以发生的事情是,
(108,38)
,也就是你的矩形的宽度和高度,被作为矩形的第二个顶点,对角穿过
(315132)
。这意味着函数从右下角
(315132)
到左上角
(108,38)

绘制了矩形。根据的文档,函数的签名为

cv2.矩形(img、pt1、pt2、颜色[、厚度[、线型[、偏移]])

其中,
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)
结果是


所以发生的事情是,
(108,38)
,也就是你的矩形的宽度和高度,被作为矩形的第二个顶点,对角穿过
(315132)
。这意味着函数从右下角
(315132)
到左上角
(108,38)

我猜,
(315132)、(108,38)
是原始图像中的坐标。因此,您需要计算裁剪图像中的眼睛棕色。事实上,即使矩形在宽度和高度上与指定的矩形完全不同,它们也不是。谢谢你的帮助我猜,
(315132)、(108,38)
是原始图像中的坐标。因此,您需要计算裁剪图像中的眼睛棕色。事实上,即使矩形在宽度和高度上与指定的矩形完全不同,它们也不是。谢谢你的帮助谢谢!这真的解决了我的问题,帮助我理解!谢谢这真的解决了我的问题,帮助我理解!