【发布时间】:2020-11-18 23:53:31
【问题描述】:
我正在从 opencv 运行 optical flow tutorial,直接的问题是 calcOpticalFlowPyrLK 产生错误 (-215:Assertion failed) img.depth() == CV_8U。
我稍微修改了代码以直接读取灰色图像。 old_grey 和 frame_grey 是 uint8 类型的形状 (84,84)。由于 opencv 的另一个问题,需要进行此修改 - 我无法加载视频文件(isopen() 给出 False)(但摄像头流有效)。也因为我最终想要做的是输入 (84,84) numpy 矩阵。
奇怪的是,相同的两个图像适用于 gunnar farneback 算法。 (后续密集光流示例)。但我想要 LK,因为它很稀疏。
环境:conda环境中的windows 10
old_frame = image.imread("grey-0.png")
old_grey = old_frame#cv2.cvtColor(np.float32(old_frame), cv2.COLOR_BGR2GRAY)
p0 = cv2.goodFeaturesToTrack(old_gray, maxCorners = 50, qualityLevel = 0.3, minDistance = 7,blockSize = 7)#**feature_params)
# Create a mask image for drawing purposes
mask = np.zeros_like(old_frame)
for i in range(1,10):
frame = image.imread("grey-"+str(i)+".png")
frame_grey = frame#cv2.cvtColor(np.float32(frame), cv2.COLOR_BGR2GRAY)
# calculate optical flow
p1, st, err = cv2.calcOpticalFlowPyrLK(old_grey, frame_grey, p0, None, **lk_params)
【问题讨论】:
标签: python opencv opencv3.0 opticalflow opencv-python