Python 如何在给定与轴对齐的边界框坐标的情况下获取对象的旋转
下面是一个返回bbox_坐标和二进制图像的函数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
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度角吗?请参阅或处的角度修正注释示例