Python 如何避免转换返回None

Python 如何避免转换返回None,python,opencv,Python,Opencv,我一直在尝试使用estimategidtransform来确定视频中帧对之间的变换矩阵。我的问题是,我输入代码的对中几乎有一半不返回任何值 我试着对整个帧使用EstimaterialGidTransform,现在我正在输入点,结果稍微好一点,但仍然不够好 ############whole frames frameBefore = cv2.imread("1.png") frame = cv2.imread("result_00001.png") transform = cv2.estima

我一直在尝试使用
estimategidtransform
来确定视频中帧对之间的变换矩阵。我的问题是,我输入代码的对中几乎有一半不返回任何值

我试着对整个帧使用
EstimaterialGidTransform
,现在我正在输入点,结果稍微好一点,但仍然不够好

############whole frames

frameBefore = cv2.imread("1.png")
frame = cv2.imread("result_00001.png") 
transform = cv2.estimateRigidTransform(frameBefore,frameafter, False)


###########data points

frameBefore = cv2.imread("1.png")
prev_gray = cv2.cvtColor(frameBefore, cv2.COLOR_BGR2GRAY)
prev_pts = cv2.goodFeaturesToTrack(prev_gray,
                                     maxCorners=200,
                                     qualityLevel=0.01,
                                     minDistance=30,
                                     blockSize=3)
frame = cv2.imread("result_00001.png")
curr_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 

curr_pts, status, err = cv2.calcOpticalFlowPyrLK(prev_gray, curr_gray, prev_pts, None) 
assert prev_pts.shape == curr_pts.shape

idx = np.where(status==1)[0]
prev_pts = prev_pts[idx]
curr_pts = curr_pts[idx]

transform = cv2.estimateRigidTransform(prev_pts, curr_pts, fullAffine=False)

对于超过43000帧,我得到18000个无值。我做错了什么?

这不会有帮助,但当前版本的OpenCV不推荐使用cv2.EstimaterialGidTransform,而支持cv::estimateAffinePartial2D。请看,这没有什么帮助,但是当前版本的OpenCV中不推荐使用cv2.EstimaterialGidTransform,而支持cv::estimateAffinePartial2D。看见