Python OpenCV示例错误-TypeError:“非类型”对象不可下标

Python OpenCV示例错误-TypeError:“非类型”对象不可下标,python,opencv,Python,Opencv,我正在尝试从OpenCV站点运行python示例: 我使用Python3来运行这个示例 它可以正常工作,但对我的视频仅持续5-15秒,然后由于下一个错误而停止: 回溯最近一次调用:文件o.py,第28行,在 good_new=p1[st==1]类型错误:“NoneType”对象不可下标 在这个例子中会有什么错误?如果所有光流对象和屏幕上的彩色点都从画面中消失,就会发生这种情况。执行此操作-如果阵列p1为空,请再次查找特征,然后计算光流。这应该行得通 将其添加到while循环中,但随着时间的推移,

我正在尝试从OpenCV站点运行python示例:

我使用Python3来运行这个示例

它可以正常工作,但对我的视频仅持续5-15秒,然后由于下一个错误而停止:

回溯最近一次调用:文件o.py,第28行,在 good_new=p1[st==1]类型错误:“NoneType”对象不可下标


在这个例子中会有什么错误?

如果所有光流对象和屏幕上的彩色点都从画面中消失,就会发生这种情况。执行此操作-如果阵列p1为空,请再次查找特征,然后计算光流。这应该行得通

将其添加到while循环中,但随着时间的推移,它只会在整个屏幕上填充行:

if p1 is None:
   p0 = cv2.goodFeaturesToTrack(old_gray, mask = None, **feature_params)
   p1, st, err = cv2.calcOpticalFlowPyrLK(...., **lk_params)

可能未返回或找到任何下一个测试,因此p1为空。在选择好的分数之前,你为什么不先检查一下空值呢?如果p1不是无,则添加:。。。。。。我还建议打印出它的值,看看是否是这样。让我知道它是否有效;是的,我这样做了,在打印的空数组-[]中,我尝试捕获并在发生这种情况时继续,但视频会暂停。您也可以将代码的其余部分封装在if语句中,因为如果good_是新的,则继续没有意义empty@eshirima当然是我的意思,我在p0=good\u new之后添加了except。重塑-1,1,2可以更新代码吗
if p1 is None:
   p0 = cv2.goodFeaturesToTrack(old_gray, mask = None, **feature_params)
   p1, st, err = cv2.calcOpticalFlowPyrLK(...., **lk_params)