首页 > 解决方案 > 计算图像的长轴和短轴并绘制它

问题描述

尝试的代码是这样的:

# Buscamos los contornos
(contornos,_) = cv2.findContours(canny.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
(contornos2,_) = cv2.findContours(canny2.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

print("He encontrado {} objetos".format(len(contornos)))
print("He encontrado {} objetos".format(len(contornos2)))

cv2.drawContours(img,contornos,-1,(0,0,255), 2)
cv2.drawContours(img2,contornos2,-1,(0,0,255), 2)
cv2.imshow("contornos", img)
cv2.imshow("contornos2", img2)


#momentos y centroide de la imagen de frente
m = cv2.moments(thresh)
print(m)
cX = int(m["m10"] / m["m00"])
cY = int(m["m01"] / m["m00"])

#momentos y centroide de la imagen de arriba
m2 = cv2.moments(thresh2)
print(m2)
cX2 = int(m2["m10"] / m2["m00"])
cY2 = int(m2["m01"] / m2["m00"])

centroide=cv2.circle(canny, (cX, cY), 5, (255, 255, 255), -1)
cv2.circle(canny2, (cX2, cY2), 5, (255, 255, 255), -1)
cv2.imshow("Image", canny)
cv2.imshow("Image2", canny2)


for i, c in enumerate(contornos):

    (x,y),(MA,ma),angle = cv2.fitEllipse(c)
    print(MA)
    print(ma)
    prueba=cv2.circle(centroide,(int(x),int(y)),5,(255,255,255),-1)
    cv2.imshow("prueba",prueba)
    cv2.waitKey(0)

在此处输入图像描述

这给了我质心(红线)和蓝色的fitEllipse时的点(x,y),我想通过质心得到长轴和短轴并绘制它,但我不明白. 有什么建议么?

标签: pythonopencv

解决方案


尝试: (x, y), (MA, ma), angle = cv2.fitEllipse(cnt)

如何找到使用 cv.fitEllipse(contour) 获得的椭圆的面积?


推荐阅读