Python 如何从图像中的轮廓集合中找到极值点

Python 如何从图像中的轮廓集合中找到极值点,python,opencv,Python,Opencv,我试图找到图像中给定多组等高线中的边界/极值点,即左上等高线的左上点,右上等高线的右上点。。。 请参考示例图像: 如图所示,我正在尝试提取角点 我从蓝色开始,成功提取蓝色面具。 现在我一直在提取左上、右上、左下、右下的点 我试过一些东西: lower = [9999, 9999, 9999, 9999] mask = cv2.inRange(hsv, lower_blue, upper_blue) contours, hierarchy = cv2.findContours(mask, cv2

我试图找到图像中给定多组等高线中的边界/极值点,即左上等高线的左上点,右上等高线的右上点。。。 请参考示例图像:

如图所示,我正在尝试提取角点 我从蓝色开始,成功提取蓝色面具。 现在我一直在提取左上、右上、左下、右下的点

我试过一些东西:

lower = [9999, 9999, 9999, 9999]
mask = cv2.inRange(hsv, lower_blue, upper_blue)
contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
for contour in contours:
    area = cv2.contourArea(contour)
    x, y, w, h = cv2.boundingRect(contour)
    if lower[0] > x != 0:
        lower[0] = x
    if lower[1] > y != 0:
        lower[1] = y
    if lower[2] > w != 0:
        lower[2] = w
    if lower[3] > h != 0:
        lower[3] = h
如果我使用这样的逻辑,我将得到左上角和右下角。 如何获得其他两个角:右上角和左下角


请帮帮我

如果你有蓝色的蒙版坐标,你所要做的就是直接找到Min/Max wich。试着清楚地解释一下你的问题所在。最简单的方法是将掩码坐标存储在点列表中,并将它们传递给cv2.Minareact(ListOfPoints)。@Ziri查看一下所需的输出。实际上需要的是由蓝色小矩形描述的大(扭曲)四边形的角点。这与查找所有(垂直)蓝色矩形(轮廓)的极值点有所不同。@HansHirse感谢您简单地描述它,如果我使用这样的
lower=[9999999999999]mask=cv2.inRange(hsv,lower_blue,upper_blue)轮廓,hierarchy=cv2.findContours(mask,cv2.RETR_TREE,cv2.CHAIN_近似无)对于等高线中的等高线:面积=cv2。等高线面积(等高线)x,y,w,h=cv2。如果较低[0]>x!=boundingRect(等高线)0:如果较低[1]>y,则较低[0]=x!=0:如果较低[2]>w,则较低[1]=y!=0:如果较低[3]>h,则较低[2]=w!=0:lower[3]=h
我可以得到左上角、右下角,但如何得到其他2