问题描述
我正在尝试监视视频中对象的运动(x y z和旋转)。我的问题是该视频的色相不足以使用Camshift,但是最后,我成功解决了这一问题。好的部分是CamShift和MeanShift能够跟随我的对象(x y z),但是CamShift却不能跟随旋转对象。看来,计算机宁愿增加\减小它的大小,而不是旋转ROI。
因为我的对象具有永久大小(距相机的距离是恒定的),所以我认为也许可以使用具有固定ROI大小的CamShift,并以此方式迫使ROI旋转。您知道这样做的任何方式吗?
任何其他建议都会被接受。
这里有一些照片和我的代码: The ROI just get bigger and smaller instead of rotating compare to the first picture
我如何找到正确的HSV值:
有我的代码:
import numpy as np
import cv2 as cv
cap = cv.VideoCapture('RoT_di_20khz001_15V028.avi')
ret,frame = cap.read()
x,y,width,height = 740,400,90,88
track_window = (x,height)
roi = frame[y:y+height,x : x+width]
hsv_roi = cv.cvtColor(roi,cv.COLOR_BGR2HSV)
term_crit = ( cv.TERM_CRITERIA_EPS | cv.TERM_CRITERIA_COUNT,10,1)
cv.imshow('roi',roi)
while(1):
ret,frame = cap.read()
if ret == True:
hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)
dst= cv.inRange(hsv,np.array((0.,0.,0.)),140)))
ret,track_window = cv.CamShift(dst,track_window,term_crit)
x,w,h = track_window
final_image = cv.rectangle(frame,(x,y),(x+w,y+h),255,3)
cv.imshow('dst',dst)
cv.imshow('final_image',final_image)
k = cv.waitKey(30) & 0xff
if k == 27:
break
else:
break
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)