Python scikit图像的点跟踪未按预期工作

Python scikit图像的点跟踪未按预期工作,python,python-3.x,scikit-image,image-stabilization,Python,Python 3.x,Scikit Image,Image Stabilization,我正在尝试使用python和通过skimage进行模板匹配来实现视频稳定。代码应该在整个视频中跟踪一个点,但是跟踪非常不精确,我怀疑它甚至不能正常工作 这是track_point函数,它应该将一个视频作为输入和一个点的一些坐标,然后为每一帧返回一个跟踪点数组 从skimage.feature导入匹配模板 从skimage.color导入rgb2gray def track_pointvideo,x,y,补丁大小=4,搜索大小=40: 长度、高度、宽度,=video.shape frame=rgb

我正在尝试使用python和通过skimage进行模板匹配来实现视频稳定。代码应该在整个视频中跟踪一个点,但是跟踪非常不精确,我怀疑它甚至不能正常工作

这是track_point函数,它应该将一个视频作为输入和一个点的一些坐标,然后为每一帧返回一个跟踪点数组

从skimage.feature导入匹配模板 从skimage.color导入rgb2gray def track_pointvideo,x,y,补丁大小=4,搜索大小=40: 长度、高度、宽度,=video.shape frame=rgb2graynp.squezevideo[1,:,:,:,:]将图像转换为灰度 x1=intmax1,x-补丁大小/2 y1=intmax1,y-补丁大小/2 x2=整数宽度,x+面片大小/2-1 y2=整数高度,y+面片大小/2-1 模板=帧[y1:y2,x1:x2]从第一帧剪切参考面片模板 轨道x=[x] 轨道y=[y] plt.imshowtemplate 一半=内部搜索大小/2 对于范围1中的i,长度: prev_x=inttrack_x[i-1] prev_y=inttrack_y[i-1] frame=rgb2graynp.squezevideo[i,:,:,:,:]提取当前帧并将其转换为灰度 image=frame[prev_x-half:prev_x+half,prev_y-half:prev_y+half]从“frame”中剪切一个搜索大小x搜索大小的区域,中心位于点的上一个位置i-1 结果=匹配\模板图像、模板、焊盘\输入=假、模式=常量、常量\值=0使用匹配\模板将区域与模板进行比较 ij=np.unravel_indexnp.argmaxresult,result.shape选择最佳匹配最大值并确定其位置。更新x和y,并将新的x、y值附加到轨迹x、轨迹y x、 y=ij[:-1] x+=x1 y+=y1 轨道附件 轨道附件 返回轨道x,轨道y 这就是函数的实现

点=轨迹\点视频,点[0],点[1] 在视频的第一帧顶部绘制轨迹 image=np.挤压视频[1,:,:,:,:] 图=plt.figure plt.gca.imshowimage plt.gca.plotpoints[0],点[1] 我希望这部电影的情节会有规律,因为这段视频没有那么不稳定,但事实并非如此

出于某种原因,图形正在绘制搜索模板的几乎所有坐标

编辑:以下是视频的链接:


我做错了什么?

你能分享你的输入视频吗?是的,在这里:我似乎看不到视频,在整个视频中我只看到一个空白的upload-video.net图像。也许最好使用dropbox这样的文件共享站点?我需要能够下载视频以在本地播放代码。上传到gdrive:你可能解决了问题吗?你能分享你的输入视频吗?是的,这里是:我似乎看不到视频,在整个视频中我只看到一个空白的upload-video.net图像。也许最好使用dropbox这样的文件共享站点?我需要能够下载视频在本地播放代码。上传到gdrive:你可能解决了这个问题吗?