我正在执行对象的运动跟踪,我正在尝试识别对象的正面和背面 . 物体是不对称的,这意味着轮廓的质心比背部更接近前部 . 使用这些信息,我接近这个如下:
绘制物体的轮廓
查找质心
centroidx, centroidy = int(moments['m10']/moments['m00']), int(moments['m10']/moments['m00'])
绘制边界椭圆
cv2.fitEllipse(contour)
如下计算长轴长度(如图所示)
MAx, MAy = int(0.5 * ellipseMajorAxisx*math.sin(ellipseAngle)), int(0.5 * ellipseMajorAxisy*math.cos(ellipseAngle))
计算长轴的开始和结束x,y坐标
MAxtop, MAytop = int(ellipseCentrex + MAx), int(ellipseCentrey + MAy)
MAxbot, MAybot = int(ellipseCentrex - MAx), int(ellipseCentrey - MAy)
确定哪个点更接近轮廓的质心
distancetop = math.sqrt((centroidx - MAxtop)**2 + (centroidy - MAytop)**2)
distancebot = math.sqrt((centroidx - MAxbot)**2 + (centroidy - MAybot)**2)
min(distancetop, distancebot)
我遇到的问题是,虽然我大部分时间都得到了椭圆