python - 计算图像的长轴和短轴并绘制它
问题描述
尝试的代码是这样的:
# 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),我想通过质心得到长轴和短轴并绘制它,但我不明白. 有什么建议么?
解决方案
尝试:
(x, y), (MA, ma), angle = cv2.fitEllipse(cnt)
推荐阅读
- firebase - 我从 github 克隆了一个项目,运行它后我遇到了这些错误
- azure - 无法使用 Postman 从 Azure Devops rest API 下载附件
- c# - ServicePointManager.ServerCertificateValidationCallback 是否覆盖 .Net 中的现有证书验证?
- java - 使用@TestConfiguration 注释的配置类如何也覆盖属性?
- android - 修改器取决于 Jetpack Compose 中其他修改器的值?
- java - 在 docker 中从 pom.xml 安装 maven 依赖项
- swift - frame.minX 在多台显示器上没有给出正确的结果
- javascript - React JS:如何将变量从一个文件传递到另一个文件,该文件不是同一文件的父文件或子文件?
- database - 如何在 Kubernetes 中处理来自多个 Pod 的并发事务
- store - Svelte 订阅多个存储值