Python 如何在给定与轴对齐的边界框坐标的情况下获取对象的旋转

Python 如何在给定与轴对齐的边界框坐标的情况下获取对象的旋转,python,opencv,image-processing,object-detection,contour,Python,Opencv,Image Processing,Object Detection,Contour,下面是一个返回bbox_坐标和二进制图像的函数 def back_projectcam1(histm,hsv_histt,hsvt): #hist: model histogram, hsv_histt: target image histogram, hsvt: hsv image of the target image track_window=None Mask = cv2.calcBackProject([hsvt],[0,1],histm,[0,180,0,256],1) Ope

下面是一个返回bbox_坐标和二进制图像的函数

def back_projectcam1(histm,hsv_histt,hsvt): #hist: model histogram, hsv_histt: target image histogram, hsvt: hsv image of the target image
 track_window=None
 Mask = cv2.calcBackProject([hsvt],[0,1],histm,[0,180,0,256],1)
 Open=cv2.morphologyEx(Mask,cv2.MORPH_OPEN,kernel1)
 #Filter=cv2.filter2D(Open,-1,kernel3,Open)
 erosion = cv2.erode(Open,kernel1,iterations = 1)
 dilation = cv2.dilate(erosion,kernel1,iterations = 2)
 Close=cv2.morphologyEx(dilation,cv2.MORPH_CLOSE,kernel1)
 _,thresh = cv2.threshold(Close,1,255,cv2.THRESH_BINARY)
 #dilation = cv2.dilate(thresh,kernel1,iterations = 1)

 contours =cv2.findContours(thresh, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
 if contours[2] is not None:
  cntss = imutils.grab_contours(contours)
  cnt=max(cntss, key=cv2.contourArea) 
  x,y,w,h = cv2.boundingRect(cnt)
 
  
  track_window=x,y,w,h

 return track_window,thresh

如何从返回的坐标(track_窗口)计算旋转。我知道我可以使用
cv2-minareact()
通过创建的轮廓获得旋转。但是,我希望使用返回的bbox_坐标找到旋转,而不必找到轮廓,这是不可能的。边界矩形包含的信息不足,无法告诉您有关对象方向的信息。您需要处理其中的像素。您需要使用cv2.minareact获得旋转的边界框。它输出方向。轴对齐的边界框将始终具有零旋转。您还可以通过使用图像矩或可能连接的组件来接近它stats@fmw42. 我已经应用了cv2.minareact()。您知道当列车水平行驶时,为什么会返回-0和-90度角吗?请参阅或处的角度修正注释示例